Considerazioni sull'intestazione HTTP Content-MD5


12

Stiamo discutendo se usare l'intestazione Content-MD5.

Professionisti:

  • Il CMS ci consente di includerlo facilmente con un sovraccarico minimo (risposte memorizzate nella cache nell'80% + dei casi).
  • Aggiungerebbe un altro livello di protezione contro i problemi.

Contro:

  • L'intestazione Content-Length è sempre presente (anche nelle pagine create dinamicamente), quindi il client non dovrebbe aver bisogno di un'altra forma di convalida.
  • Finora non siamo a conoscenza di eventuali problemi causati dalla corruzione.
  • I controlli MD5 aggiungono latenza ai tempi di caricamento della pagina Web.

Punti:

  • Alcuni tipi di media includono la propria forma di digest che rende questo non necessario?
  • Se TCP lo offre già, perché è stato incluso nello standard HTTP?
  • Quali sono gli usi della vita reale esistente?
  • Il controllo MD5 è trascurabile?

Non è un vero problema che questo venga aggiunto ai test unitari e implementato, circa un'ora di lavoro; tuttavia, se è dannoso, lo vogliamo aggiungere ai test di sniffing di livello superiore utilizzati nei "controlli di integrità" del sito Web.

Risposte:


10

TCP ha già la correzione degli errori, ma questo ti aiuta solo a livello TCP. Un proxy HTTP intermedio o un bilanciamento del carico possono corrompere i dati sul livello HTTP e quindi ritrasmetterli. Un MD5 HTTP consente di rilevare questa corruzione. Il motivo per cui nessuno parla davvero di questa esigenza è che il problema è davvero molto raro; la maggior parte dei proxy HTTP ecc "funzionano".

Le RFC alludono alla sicurezza. IMHO questo è così debole che dovrebbe essere ignorato - se hai bisogno di qualsiasi tipo di sicurezza e riservatezza reali, allora hai bisogno di HTTPS.

Alcuni tipi di media includono la propria forma di digest che rende questo non necessario?

Niente di veramente buono. Ma alcuni errori nelle foto, nei video in streaming, ecc. Saranno spesso impercettibili per l'uomo.

Direi che dipende dal caso d'uso:

  • Per i servizi Web basati su REST un digest aggiunge un utile livello di correzione degli errori aggiuntiva. Vedi questo errore AWS come esempio .
  • Vale la pena implementare per applicazioni che trattano dati mission-critical su HTTP semplice. Content-MD5 offre ai clienti la possibilità di verificare l'integrità della trasmissione end-to-end.
  • Per i siti Web "normali" che offrono testo e contenuti multimediali di valore "normale", l'intestazione Content-MD5 non ha alcun scopo. E onestamente non so nemmeno quanti browser mainstream (PC, soprattutto mobili) lo supportano davvero.

1
Quel caso di fallimento di AWS è davvero insidioso. Ha pochi anni, ma è davvero un affascinante esempio di una modalità di fallimento a cui non avrei mai pensato. Molto interessante da tenere in considerazione quando si utilizza l'archiviazione dei dati in remoto. Mi chiedo alcune delle soluzioni NoSQL e come gestiscono tali problemi.
artlung,

Questo rende abbastanza facile passare la decisione al cliente. Un'opzione come questa può ora essere offerta come "piacevole da avere" ma non come criterio essenziale. Se Amazon è in grado di distribuire un bilanciamento del carico e causare questi errori, è probabile che alla fine emerga da qualche parte e nulla sembra peggiore di un sito Web incoerente e problematico.
Metalshark,

Dipende molto da dove si trova il bit capovolto. Se è il bit meno significativo, sarà impercettibile. Ma c'è un'enorme differenza tra i colori rgb(255, 0, 0)e rgb(127, 0, 0). Con i video non elaborati una corruzione a singolo pixel sarà meno percepibile perché è sullo schermo per un momento così breve, ma poiché la maggior parte dei video online utilizza algoritmi di compressione altamente efficienti, un singolo bit che viene capovolto può causare la corruzione o lo spostamento di metà dell'immagine schermo.
Lèse majesté,

Inoltre, come hai detto, le banche dovrebbero semplicemente usare HTTPS, quindi non ha senso usare Content-MD5nemmeno loro, dal momento che SSL / TLS fornisce già un digest dei messaggi a livello di applicazione?
Lèse majesté,

1
@ Lèse majesté: per quanto riguarda gli errori di bit, concordo nel caso astratto. Ma ricorda che la maggior parte degli streaming video FX utilizza un trasporto specifico dell'applicazione su UDP o TCP per offrire il giusto compromesso tra correzione degli errori e velocità - e lo streaming video non sarebbe quindi un caso d'uso per Content-MD5. Per quanto riguarda le banche dovrebbero usare HTTPS, sono d'accordo e sto riformulando per renderlo più chiaro.
Jesper M,

1

I controlli MD5 aggiungono latenza ai tempi di caricamento della pagina Web.

Se vero (e la latenza non è del tutto banale) allora direi che non ne valeva la pena.

In generale, credo, l'ultima intestazione modificata sia più comunemente usata per determinare se una pagina è cambiata. Supponendo che tu fornisca un valore significativo lì, non vedo la necessità dell'intestazione content-md5.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.