Consideraciones del encabezado HTTP Content-MD5

12

Estamos debatiendo si usar el encabezado Content-MD5.

Pros:

  • El CMS nos permite incluirlo fácilmente con una sobrecarga mínima (respuestas en caché en más del 80% de los casos).
  • Agregaría otra capa de protección contra problemas.

Contras:

  • El encabezado Content-Length siempre está presente (incluso en páginas creadas dinámicamente) por lo que el cliente no debería necesitar otra forma de validación.
  • Hasta ahora no tenemos conocimiento de ningún problema causado por la corrupción.
  • Las comprobaciones MD5 agregan latencia a los tiempos de carga de la página web.

Puntos:

  • ¿Ciertos tipos de medios incluyen su propia forma de resumen que hace que esto sea innecesario?
  • Si TCP ya ofrece esto, ¿por qué se incluyó en el estándar HTTP?
  • ¿Cuáles son los usos existentes de la vida real?
  • ¿El cheque MD5 es insignificante?

No es un problema real que esto se agregue a las pruebas unitarias y se implemente, aproximadamente una hora de trabajo; sin embargo, si es perjudicial, entonces queremos que se agregue a las pruebas de olfato de nivel superior que se usan en los "controles de estado" del sitio web.

Metalshark
fuente

Respuestas:

10

TCP ya tiene corrección de errores, pero esto solo le ayuda en la capa TCP. Un proxy HTTP intermediario o equilibrador de carga puede dañar los datos en la capa HTTP y luego retransmitirlos. Un HTTP MD5 hace posible detectar esta corrupción. La razón por la que nadie habla realmente de esta necesidad es que el problema es muy raro; la mayoría de los servidores proxy HTTP, etc. "simplemente funcionan".

Las RFC aluden a la seguridad. En mi humilde opinión, esto es tan débil que debería ignorarse: si necesita algún tipo de seguridad y confidencialidad reales, entonces necesita HTTPS.

¿Ciertos tipos de medios incluyen su propia forma de resumen que hace que esto sea innecesario?

No hay nada realmente bueno. Pero algunos errores en las fotos, la transmisión de video, etc., a menudo serán imperceptibles para los humanos.

Yo diría que depende del caso de uso:

  • Para los servicios web basados ​​en REST, un resumen agrega una capa útil de corrección de errores adicional. Vea este error de AWS como ejemplo .
  • Vale la pena implementar para aplicaciones que tratan con datos críticos de la misión a través de HTTP simple. Content-MD5 ofrece a los clientes la opción de verificar la integridad de la transmisión de extremo a extremo.
  • Para los sitios web "normales" que sirven texto y medios de valor "normal", el encabezado Content-MD5 no sirve para nada. Y honestamente, ni siquiera sé cuántos navegadores convencionales (PC, especialmente móviles) realmente lo admiten.
Jesper M
fuente
1
Ese caso de falla de AWS es realmente insidioso. Tiene unos pocos años, pero realmente es un ejemplo fascinante de un modo de falla en el que nunca hubiera pensado. Muy interesante a tener en cuenta cuando se utiliza el almacenamiento de datos de forma remota. Me pregunto sobre algunas de las soluciones NoSQL y cómo manejan estos problemas.
artlung
Esto hace que sea bastante fácil transmitir la decisión al cliente. Ahora se puede ofrecer una opción como esta como "agradable de tener" pero no como criterio esencial. Si Amazon puede implementar un equilibrador de carga y causar estos errores, es probable que surja en algún lugar eventualmente y nada se vea peor que un sitio web inconsistentemente problemático.
Metalshark
Eso realmente depende de dónde esté el bit invertido. Si es el bit menos significativo, entonces será imperceptible. Pero hay una gran diferencia entre los colores rgb(255, 0, 0)y rgb(127, 0, 0). Con el video en bruto, una corrupción de un solo píxel será menos perceptible porque está en la pantalla por un breve momento, pero debido a que la mayoría de los videos en línea usan algoritmos de compresión altamente eficientes, un solo bit invertido puede causar que la mitad de la imagen se corrompa o se desplace pantalla.
Lèse majesté
Además, como dijiste, los bancos deberían usar solo HTTPS, por lo que tampoco tiene sentido que lo usen Content-MD5, ya que SSL / TLS ya proporciona un resumen de mensajes en la capa de aplicación.
Lèse majesté
1
@ Lèse majesté: En cuanto a los errores de bit, estoy de acuerdo en el caso abstracto. Pero recuerde que la mayoría de las transmisiones de video fx utilizan un transporte específico de la aplicación a través de UDP o TCP para ofrecer la compensación 'correcta' entre la corrección de errores y la velocidad, y la transmisión de video no sería un caso de uso para Content-MD5. En cuanto a los bancos deben usar HTTPS, estoy de acuerdo, y estoy reformulando para que quede más claro.
Jesper M
1

Las comprobaciones MD5 agregan latencia a los tiempos de carga de la página web.

Si es cierto (y la latencia no es del todo trivial), entonces diría que no valió la pena.

En general, creo, el último encabezado modificado se usa más comúnmente para determinar si una página ha cambiado. Suponiendo que proporcione un valor significativo allí, no veo la necesidad del encabezado content-md5.

Kris
fuente