Überlegungen zum HTTP Content-MD5-Header


12

Wir überlegen, ob der Content-MD5-Header verwendet werden soll.

Vorteile:

  • Das CMS ermöglicht es uns, es einfach mit minimalem Overhead einzubinden (zwischengespeicherte Antworten in über 80% der Fälle).
  • Es würde eine weitere Schutzschicht gegen Probleme hinzufügen.

Nachteile:

  • Der Content-Length-Header ist immer vorhanden (auch auf dynamisch erstellten Seiten), sodass der Client keine andere Form der Validierung benötigen sollte.
  • Bisher sind uns keine Probleme durch Korruption bekannt.
  • MD5-Prüfungen verlängern die Ladezeiten von Webseiten.

Punkte:

  • Enthalten bestimmte Medientypen eine eigene Verdauungsform, die dies unnötig macht?
  • Wenn TCP dies bereits anbietet, warum war es dann im HTTP-Standard enthalten?
  • Was sind die vorhandenen realen Verwendungen?
  • Ist der MD5-Check vernachlässigbar?

Es ist kein wirkliches Problem, dies zu den Unit-Tests hinzuzufügen und zu implementieren, etwa eine Stunde Arbeit; Wenn es jedoch nachteilig ist, möchten wir, dass es zu den übergeordneten Schnüffeltests hinzugefügt wird, die für Website-Gesundheitschecks verwendet werden.

Antworten:


10

TCP hat bereits eine Fehlerkorrektur, die Ihnen jedoch nur auf der TCP-Ebene hilft. Ein zwischengeschalteter HTTP-Proxy oder ein Lastenausgleich können die Daten auf der HTTP-Ebene beschädigen und anschließend erneut übertragen. Ein HTTP-MD5 ermöglicht es, diese Beschädigung zu erkennen. Der Grund, warum niemand wirklich über dieses Bedürfnis spricht, ist, dass das Problem in der Tat sehr selten ist; Die meisten HTTP-Proxies usw. funktionieren einfach.

Die RFCs spielen auf Sicherheit an. IMHO ist dies so schwach, dass es ignoriert werden sollte - wenn Sie echte Sicherheit und Vertraulichkeit benötigen, dann benötigen Sie HTTPS.

Enthalten bestimmte Medientypen eine eigene Verdauungsform, die dies unnötig macht?

Nichts wirklich Gutes. Aber ein paar kleine Fehler in Fotos, Streaming-Videos usw. sind für Menschen oft nicht wahrnehmbar.

Ich würde sagen, es hängt vom Anwendungsfall ab:

  • Bei REST-basierten Webdiensten fügt ein Digest eine nützliche Schicht zusätzlicher Fehlerkorrektur hinzu. Sehen Sie sich diesen AWS-Fehler als Beispiel an .
  • Für Anwendungen, die geschäftskritische Daten über einfaches HTTP verarbeiten, lohnt sich die Implementierung. Content-MD5 bietet Kunden die Möglichkeit, die End-to-End-Übertragungsintegrität zu überprüfen.
  • Für "normale" Websites, die Text und Medien mit "normalem" Wert bereitstellen, hat der Content-MD5-Header keinen Zweck. Und ich weiß ehrlich gesagt nicht einmal, wie viele Mainstream-Browser (PC, insbesondere mobile) dies tatsächlich unterstützen.

1
Dieser AWS-Fehlerfall ist wirklich heimtückisch. Es ist ein paar Jahre alt, aber wirklich ein faszinierendes Beispiel für einen Fehlermodus, an den ich nie gedacht hätte. Sehr interessant, wenn Sie die Speicherung von Daten aus der Ferne verwenden. Ich frage mich über einige der NoSQL-Lösungen und wie sie mit solchen Problemen umgehen.
Artlung

Dies macht es ziemlich einfach, die Entscheidung an den Kunden weiterzuleiten. Eine Option wie diese kann nun als "nice to have" angeboten werden, ist aber kein wesentliches Kriterium. Wenn Amazon einen Load Balancer bereitstellen kann und diese Fehler verursacht, wird er wahrscheinlich irgendwann auftauchen und nichts sieht schlimmer aus als eine uneinheitlich störende Website.
Metalshark

Das hängt wirklich davon ab, wo sich das umgedrehte Bit befindet. Wenn es das niedrigstwertige Bit ist, ist es nicht wahrnehmbar. Aber es gibt einen großen Unterschied zwischen den Farben rgb(255, 0, 0)und rgb(127, 0, 0). Bei Rohvideos ist eine Einzelpixelverfälschung weniger wahrnehmbar, da sie nur für einen kurzen Moment auf dem Bildschirm angezeigt wird. Da die meisten Onlinevideos jedoch hocheffiziente Komprimierungsalgorithmen verwenden, kann ein einzelnes Spiegelbild dazu führen, dass die Hälfte des Bildes verfälscht oder verschoben wird Bildschirm.
Majestätsbeleidigung

Wie Sie bereits sagten, sollten Banken auch nur HTTPS verwenden. Ist es also nicht sinnlos, dies zu tun Content-MD5, da SSL / TLS bereits einen Message Digest auf Anwendungsebene bereitstellt?
Majestätsbeleidigung

1
@ Lèse majesté: In Bezug auf Bitfehler stimme ich im abstrakten Fall zu. Denken Sie jedoch daran, dass die meisten Streaming-Video-FX einen anwendungsspezifischen Transport über UDP oder TCP verwenden, um den „richtigen“ Kompromiss zwischen Fehlerkorrektur und Geschwindigkeit zu finden. Streaming-Video wäre daher kein Anwendungsfall für Content-MD5. In Bezug auf Banken sollte HTTPS verwendet werden, stimme ich zu und formuliere es neu, um es klarer zu machen.
Jesper M

1

MD5-Prüfungen verlängern die Ladezeiten von Webseiten.

Wenn dies zutrifft (und die Latenz nicht ganz unbedeutend ist), würde ich sagen, dass es sich nicht gelohnt hat.

Im Allgemeinen wird der zuletzt geänderte Header meines Erachtens am häufigsten verwendet, um festzustellen, ob sich eine Seite geändert hat. Unter der Annahme, dass Sie dort einen aussagekräftigen Wert liefern, sehe ich keine Notwendigkeit für den content-md5-Header.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.