• # X-Forwarded-For

    Posté par . En réponse à la dépêche ExaProxy, un proxy HTTP filtrant. Évalué à 2.

    A priori un proxy filtrant c'est fait pour ne pas être contourné, alors attention aux headers X-Forwarded-For qui sont très simples à générer.

    Imaginons un proxy qui laisse passer certaines requetes web selon la station cliente en se basant sur le champ X-Forwarded-For. Il suffit que la machine cliente injecte un header X-Forwarded-For pour se faire passer pour une autre …

    Il faut donc absolument
    - être sur un réseau sur lequel on maitrise les IP
    - que le proxy filtrant valide que l'adresse IP de laquelle vient la requete est bien un "trusted proxy". Si on autorise les cascades de proxys, il faut valider toute la chaine des proxy qui ont été traversés. Cette chaine doit être présente dans le (ou les) header(s) X-Forwarded-For.

    Car il y a 2 méthodes possibles dans la RFC: chainer les adresses IP dans le même header (séparées par des virgules), ou ajouter un header a chaque fois que l'on traverse un proxy. Du coup les produits (apache, jboss, haproxy, …) implementent rarement les deux solutions et ne sont pas forcement compatibles entre eux :-(

    Bref le X-Forwarded-For pour gérer de la sécurité c'est vraiment quand on n'a pas trouvé mieux !