Особенности HTTP-заголовка Content-MD5

12

Мы обсуждаем, использовать ли заголовок Content-MD5.

Плюсы:

  • CMS позволяет нам легко включать его с минимальными издержками (кэшированные ответы в 80% + случаев).
  • Это добавит еще один уровень защиты от проблем.

Минусы:

  • Заголовок Content-Length всегда присутствует (даже на динамически создаваемых страницах), поэтому клиенту не требуется другая форма проверки.
  • Пока что нам неизвестно о каких-либо проблемах, вызванных коррупцией.
  • Проверки MD5 увеличивают время ожидания загрузки веб-страницы.

Точки:

  • Включают ли определенные типы носителей свои собственные формы дайджеста, что делает это ненужным?
  • Если TCP уже предлагает это, почему он был включен в стандарт HTTP?
  • Каковы существующие применения в реальной жизни?
  • Является ли проверка MD5 незначительной?

Нет ничего страшного в том, что это будет добавлено в модульные тесты и реализовано, примерно час работы; однако, если это пагубно, мы хотим, чтобы оно было добавлено к тестам анализатора более высокого уровня, используемым в проверках работоспособности сайта.

Metalshark
источник

Ответы:

10

TCP уже имеет исправление ошибок, но это только помогает вам на уровне TCP. Промежуточный HTTP-прокси или балансировщик нагрузки может повредить данные на уровне HTTP, а затем повторно передать их. HTTP MD5 позволяет обнаружить это повреждение. Причина, по которой никто не говорит об этой необходимости, заключается в том, что проблема действительно очень редкая; большинство HTTP прокси и т. д. "просто работают".

RFC ссылаются на безопасность. ИМХО, это настолько слабо, что это следует игнорировать - если вам нужна какая-либо реальная безопасность и конфиденциальность, то вам нужен HTTPS.

Включают ли определенные типы носителей свои собственные формы дайджеста, что делает это ненужным?

Ничего особенного. Но небольшие ошибки в фотографиях, потоковое видео и т. Д. Часто будут незаметны для людей.

Я бы сказал, что это зависит от варианта использования:

  • Для веб-сервисов на основе REST дайджест добавляет полезный уровень дополнительного исправления ошибок. Посмотрите на этот сбой AWS в качестве примера .
  • Для приложений, работающих с критически важными данными по обычному HTTP, его стоит реализовать. Content-MD5 дает клиентам возможность проверить целостность сквозной передачи.
  • Для «обычных» веб-сайтов, обслуживающих текст и мультимедиа «нормального» значения, заголовок Content-MD5 не имеет смысла. И я, честно говоря, даже не знаю, сколько популярных браузеров (ПК, особенно мобильных) на самом деле его поддерживают.
Джеспер М
источник
1
Этот случай отказа AWS действительно коварен. Ему несколько лет, но это действительно увлекательный пример режима отказа, о котором я бы никогда не подумал. Очень интересно следить за удаленным использованием хранилища данных. Мне интересно узнать о некоторых решениях NoSQL и о том, как они справляются с такими проблемами.
artlung
Это позволяет довольно легко передать решение клиенту. Подобный вариант теперь может быть предложен как «приятно иметь», но не является обязательным критерием. Если Amazon может развернуть балансировщик нагрузки и вызвать эти ошибки, он может в конечном итоге где-то неожиданно появиться, и ничто не выглядит хуже, чем непостоянно хлопотный веб-сайт.
Metalshark
Это действительно зависит от того, где находится перевернутый бит. Если это наименее значимый бит, то он будет незаметным. Но есть огромная разница между цветами rgb(255, 0, 0)и rgb(127, 0, 0). В необработанном видео искажение в один пиксель будет менее ощутимым, потому что оно будет отображаться на экране в течение такого короткого момента, но поскольку в большинстве онлайн-видео используются высокоэффективные алгоритмы сжатия, переворачивание одного бита может привести к повреждению или сдвигу половины изображения. экран.
Lèse Majesté
Кроме того, как вы сказали, банкам следует просто использовать HTTPS, поэтому нет ли у них и смысла их использовать Content-MD5, поскольку SSL / TLS уже обеспечивает дайджест сообщений на уровне приложений?
Lèse Majesté
1
@ Lèse majesté: Что касается битовых ошибок, я согласен в абстрактном случае. Но помните, что большинство потоковых видео использует специализированный транспорт по UDP или TCP, чтобы обеспечить «правильный» компромисс между исправлением ошибок и скоростью - и потоковое видео, таким образом, не будет подходящим вариантом для Content-MD5. Что касается банков, должны использовать HTTPS, я согласен, и я перефразирую, чтобы сделать это более ясным.
Jesper M
1

Проверки MD5 увеличивают время ожидания загрузки веб-страницы.

Если это правда (и латентность не совсем тривиальна), то я бы сказал, что это того не стоило.

В целом, я считаю, что последний измененный заголовок чаще всего используется для определения того, изменилась ли страница. Предполагая, что вы предоставляете значимое значение, я не вижу необходимости в заголовке content-md5.

Kris
источник