web-dev-qa-db-fra.com

Considérations relatives à l'en-tête HTTP Content-MD5

Nous discutons s'il faut utiliser l'en-tête Content-MD5.

Avantages:

  • Le CMS nous permet de l'inclure facilement avec un minimum de temps système (réponses mises en cache dans plus de 80% des cas).
  • Cela ajouterait une autre couche de protection contre les problèmes.

inconvénients:

  • L'en-tête Content-Length est toujours présent (même sur les pages créées dynamiquement). Le client ne devrait donc pas avoir besoin d'une autre forme de validation.
  • Jusqu'à présent, nous ne sommes au courant d'aucun problème causé par la corruption.
  • Les contrôles MD5 ajoutent de la latence aux temps de chargement des pages Web.

Points:

  • Certains types de supports incluent-ils leur propre forme de résumé qui rend cela inutile?
  • Si TCP offre déjà cela, pourquoi a-t-il été inclus dans la norme HTTP?
  • Quelles sont les utilisations réelles existantes?
  • Le chèque MD5 est-il négligeable?

Ce n'est pas vraiment un problème si cela doit être ajouté aux tests unitaires et mis en œuvre, environ une heure de travail; Toutefois, si cela est préjudiciable, nous voulons qu’il soit ajouté aux tests de détection de niveau supérieur utilisés dans les "bilans de santé" de sites Web.

12
Metalshark

TCP a déjà une correction d'erreur, mais cela ne vous aide que sur la couche TCP. Un proxy HTTP intermédiaire ou un équilibreur de charge peut corrompre les données de la couche HTTP, puis les retransmettre. Un HTTP MD5 permet de détecter cette corruption. La raison pour laquelle personne ne parle vraiment de ce besoin est que le problème est très rare; la plupart des proxies HTTP, etc. "fonctionnent".

Les RFC font allusion à la sécurité. IMHO c'est tellement faible qu'il devrait être ignoré - si vous avez besoin de sécurité ou de confidentialité, vous avez besoin de HTTPS.

Certains types de supports incluent-ils leur propre forme de résumé qui rend cela inutile?

Pas quelque chose de vraiment bien. Mais quelques erreurs dans les photos, le streaming vidéo, etc. seront souvent imperceptibles pour l’homme.

Je dirais que cela dépend du cas d'utilisation:

  • Pour les services Web basés sur REST, un résumé ajoute une couche utile de correction d'erreur supplémentaire. Voir ceci échec AWS à titre d'exemple .
  • Pour les applications traitant des données critiques via HTTP, cela vaut la peine d'être implémenté. Content-MD5 offre aux clients la possibilité de vérifier l'intégrité de la transmission de bout en bout.
  • Pour les sites Web "normaux" contenant des textes et des supports de valeur "normale", l'en-tête Content-MD5 ne sert à rien. Et honnêtement, je ne sais même pas combien de navigateurs traditionnels (PC, en particulier les mobiles) le supportent réellement.
10
Jesper Mortensen

Les contrôles MD5 ajoutent de la latence aux temps de chargement des pages Web.

Si cela est vrai (et que la latence n'est pas tout à fait triviale), alors je dirais que cela n'en valait pas la peine.

En général, je crois que le dernier en-tête modifié est le plus souvent utilisé pour déterminer si une page a été modifiée. En supposant que vous fournissiez une valeur significative, je ne vois pas besoin pour l'en-tête content-md5.

1
Kris