← HTTP — sécurité avancée, 40 leçons de cours

Module 32 / 40 · 90 min

32. Host, Forwarded et confiance des mandataires

Définir qui est autorisé à décrire la requête d’origine.

Lessons, exercises and questions in this path are in French. The interface follows the site language.

Your progress will appear here when JavaScript is active.

Progress and best score are stored only in this browser. No account is needed; clearing browser data removes them. Module times are estimates including exercises.

Comprendre le mécanisme

Un reverse proxy peut transmettre l’hôte, le schéma ou une adresse d’origine au serveur applicatif. Des champs comme Forwarded ou des variantes historiques X-Forwarded-* ne doivent pas être crus simplement parce qu’ils sont présents. Si le client externe peut fournir la même information sans être neutralisé, l’application risque de générer de mauvais liens, de journaliser une fausse origine ou d’appliquer une décision fondée sur une entrée hostile.

Raisonner et vérifier

Configurez explicitement les mandataires de confiance et les champs qu’ils reconstruisent. Distinguez connexion observée par PHP et connexion externe terminée en TLS au frontal. Utilisez une origine publique de confiance pour les liens sensibles lorsque le besoin s’y prête. Testez les accès directs à l’application et le passage normal par le proxy ; une configuration correcte suppose aussi que les chemins non prévus sont bornés.

Provenance

Forwarded est une donnée à interpréter selon sa provenance. Un client peut envoyer un champ de ce nom. Un client direct peut envoyer Forwarded avec proto=https ou une fausse IP. La valeur n’est fiable que dans une chaîne où son producteur et le nettoyage des entrées externes sont maîtrisés.

Understand this common mistake

Le nom Forwarded rend toute valeur fiable.

Un client peut envoyer un champ de ce nom.

Proxies admis

Les adresses de proxies admis doivent être maîtrisées. L’affirmation reçue ne prouve pas l’émetteur. Configurez des adresses ou réseaux de confiance correspondant à l’infrastructure réelle. Une confiance globale peut permettre à tout appelant d’influencer des décisions fondées sur des métadonnées supposées internes.

Understand this common mistake

Tout émetteur d’un X-Forwarded-For est un proxy de confiance.

L’affirmation reçue ne prouve pas l’émetteur.

Nettoyage

Le proxy peut supprimer et reconstruire les champs attendus. Une chaîne fiable demande une politique de frontière. Le proxy d’entrée peut supprimer les headers clients concernés puis reconstruire les valeurs fiables. Vérifiez cette règle et les accès directs éventuels au backend, qui pourraient contourner cette frontière.

Understand this common mistake

Conserver tous les champs entrants garantit leur authenticité.

Une chaîne fiable demande une politique de frontière.

Schéma perçu

Le schéma perçu influence les URL générées. Les composants peuvent utiliser cette information pour générer des URL. Le schéma reconstruit influence cookies Secure, redirections et URL absolues. Derrière une terminaison TLS, une mauvaise configuration peut produire des liens HTTP ou des boucles sans que le navigateur utilise ce schéma initialement.

Understand this common mistake

Le schéma annoncé ne peut affecter aucun lien absolu.

Les composants peuvent utiliser cette information pour générer des URL.

Host

Le Host doit suivre les contraintes du service. Une entrée hostile peut influencer des URL et décisions. Un lien de réinitialisation construit depuis un Host libre peut viser un domaine contrôlé par l’appelant. Limitez les hôtes du service et utilisez un contexte maîtrisé pour générer les liens sensibles.

Understand this common mistake

Tout Host reçu est une destination publique légitime.

Une entrée hostile peut influencer des URL et décisions.

Adresse et quotas

La confiance trop large peut affecter la limitation par IP. Un émetteur peut alors influencer l’identité réseau perçue. Un attaquant qui choisit une fausse IP annoncée peut contourner un quota naïf. Définissez quelle adresse représente le client selon la chaîne réelle et testez accès direct et accès via proxy.

Understand this common mistake

Faire confiance à toutes les adresses améliore toujours les quotas.

Un émetteur peut alors influencer l’identité réseau perçue.

Topologie testée

Le trajet réel doit être reproduit dans les tests. Le chemin peut transformer les métadonnées. Reproduisez les sauts, terminaisons et headers dans l’environnement de vérification. Un test direct sur localhost ne démontre pas que la reconstruction d’identité réseau fonctionne derrière le proxy hébergé.

Understand this common mistake

Un appel direct local prouve la chaîne des proxies publics.

Le chemin peut transformer les métadonnées.

Réseaux évolutifs

Les réseaux de confiance peuvent évoluer. La configuration doit suivre l’infrastructure réelle. Des adresses d’intermédiaires peuvent changer lors d’une migration. Prévoyez la maintenance et la validation régulière de la liste admise ; une ancienne plage trop large peut conserver une confiance inutile.

Understand this common mistake

Une liste non relue demeure correcte pour toute topologie future.

La configuration doit suivre l’infrastructure réelle.

Trajet interne

Le transport interne demande sa propre vérification. La terminaison TLS marque une frontière de protection. TLS au frontal ne démontre pas le chiffrement entre proxy et application. Vérifiez réseau, authentification et transport de ce segment selon les données et les capacités qu’il transporte.

Understand this common mistake

HTTPS public chiffre automatiquement le saut interne.

La terminaison TLS marque une frontière de protection.

Corrélation

La corrélation ne doit pas divulguer les secrets. Des métadonnées minimisées peuvent suffire au diagnostic. Transmettez des identifiants de trace non sensibles et validés. Ne faites pas voyager cookies ou bearer tokens dans un identifiant de diagnostic pour faciliter le rapprochement des journaux.

Understand this common mistake

Déboguer les proxies exige les cookies complets des clients.

Des métadonnées minimisées peuvent suffire au diagnostic.

Atelier guidé : lire, expliquer et vérifier le code

Forwarded: for=192.0.2.42;proto=https;host=portal.example.test

La ligne Forwarded contient une adresse et un schéma, mais aucune preuve de son producteur. Décrivez les conditions nécessaires pour les accepter : proxy admis, nettoyage des valeurs externes et impossibilité de contourner ce trajet. Vérifiez ensuite les liens générés et la limitation par IP.

Le nom ne protège pas sa provenance. Le serveur doit lier ces métadonnées à un producteur admis. La déclaration client n’observe pas tout le trajet. Le champ ne vérifie pas une identité.

Travail pratique : Simulez un champ d’origine falsifié depuis le client, puis vérifiez les liens générés et les attributs de cookies derrière le proxy de laboratoire.

Critères de correction : Comparez requête directe et requête relayée. Vérifiez les champs effectivement reconstruits, les proxys déclarés et la génération d’URL. Confirmez qu’un appelant non autorisé ne peut pas choisir l’origine d’un lien sensible.

Worked example

Client externe → proxy de confiance 192.0.2.10 → application
Le proxy neutralise les assertions entrantes et produit le contexte autorisé.

L’adresse est réservée aux exemples de documentation. Elle doit être remplacée dans une vraie architecture par la liste précise des équipements maîtrisés.

Practical exercise

Simulez un champ d’origine falsifié depuis le client, puis vérifiez les liens générés et les attributs de cookies derrière le proxy de laboratoire.

View a suggested solution

Comparez requête directe et requête relayée. Vérifiez les champs effectivement reconstruits, les proxys déclarés et la génération d’URL. Confirmez qu’un appelant non autorisé ne peut pas choisir l’origine d’un lien sensible.

Verification checklist

  • Mandataires explicites.
  • Neutralisation des champs client concurrents.
  • Origine publique maîtrisée.

Knowledge check

Related lesson: 32. Host, Forwarded et confiance des mandataires ↗
La présence de Forwarded prouve-t-elle que son contenu vient d’un proxy de confiance ?

Reference documentation ↗

Module validation

101 questions, local practice target of 75%. Suggested duration of 150 minutes, with no enforced deadline. Questions and choices are shuffled; corrections appear after submission. The quick lesson check and the final course exam remain separate exercises.

Start or resume the 101 questions →