Aller au contenu principal

8. Security Considerations (Considérations de sécurité)

Cette section vise à informer les développeurs, les fournisseurs d'informations et les utilisateurs des problèmes de sécurité connus spécifiques aux requêtes conditionnelles HTTP.

Disclosure of Entity Tags (Divulgation des balises d'entité)

Les balises d'entité sont souvent utilisées de manière "non conforme", par exemple pour la synchronisation du cache entre plusieurs intermédiaires, ou comme moyen d'identifier les instantanés archivés de contenu. Comprendre comment les balises d'entité sont générées pour une ressource donnée est spécifique à l'application et souvent propriétaire. L'exposition de balises d'entité qui divulguent des informations sur la logique de l'application ou le comportement de mise en cache des intermédiaires pourrait révéler des informations sur la façon de contourner les contrôles d'accès de cette application ou de manipuler les caches intermédiaires.

Un serveur d'origine devrait considérer que certaines balises d'entité pourraient divulguer des informations qui pourraient être considérées comme sensibles dans certains contextes. Les exemples incluent:

  • Informations de contrôle de version (par exemple, numéros de révision, noms de branche)
  • Hachages ou signatures dérivés d'un contenu ayant des restrictions d'accès
  • Modèles qui révèlent des détails d'implémentation interne

Denial of Service Using Conditional Requests (Déni de service utilisant des requêtes conditionnelles)

Bien que les requêtes conditionnelles puissent réduire la bande passante réseau et la surcharge de traitement en permettant la réutilisation des représentations en cache, elles ne constituent pas une protection suffisante contre les attaques par déni de service. Des clients malveillants peuvent toujours effectuer de nombreuses requêtes conditionnelles pour différentes ressources ou la même ressource avec des champs d'en-tête conditionnels invalides ou en constante évolution, submergeant la capacité du serveur à répondre.

Un serveur devrait surveiller l'utilisation des requêtes conditionnelles et envisager des mesures de limitation de débit ou d'autres mesures défensives lorsque des modèles anormaux sont détectés.

Protocol Element Length (Longueur des éléments de protocole)

Les serveurs devraient placer des limites raisonnables sur la taille et le nombre de valeurs de champs d'en-tête conditionnels, en particulier les balises d'entité dans les champs d'en-tête If-Match et If-None-Match, car il n'existe pas de contrainte de longueur standard sur les valeurs de balise d'entité. Des balises d'entité extrêmement longues ou un nombre excessif de balises d'entité dans un seul champ d'en-tête pourraient être utilisés pour épuiser les ressources du serveur.