X-Forwarded-For
Un en-tête de requête qui énumère les adresses par lesquelles la requête est passée, allongé par chaque relais : proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for reprend ce qui est arrivé et y ajoute $remote_addr, l'adresse du saut que Nginx a réellement vu. Tout le modèle de confiance est là, et l'erreur aussi. Cet en-tête ne prouve pas qui est le visiteur : ce qui précède l'entrée écrite par votre proxy vient de quelqu'un que vous ne contrôlez pas, et rien n'empêche un client d'envoyer X-Forwarded-For: 203.0.113.7 dès sa première requête. Seule la dernière valeur, celle que votre proxy a ajoutée, mérite d'être crue. Une limitation de débit ou une liste de blocage fondée sur la première ne bloque personne : l'attaquant change la chaîne à chaque requête, et vos compteurs comptent des inventions. Avec Express, app.set('trust proxy', 1) dit précisément cela — un seul saut de confiance, le vôtre.
Aussi écrit : XFF, $proxy_add_x_forwarded_for
