Erhalten Sie die echte IP-Adresse des Kunden auf Heroku

Bei Heroku Cedar wollte ich die IP des Kunden erhalten. Erster Versuch:

ENV['REMOTE_ADDR']

Dies funktioniert natürlich nicht, da alle Anforderungen über Proxys weitergeleitet werden. Die Alternative war also:

ENV['HTTP_X_FORWARDED_FOR']

Aber das ist nicht ganz sicher, oder?

Wenn es nur einen Wert enthält, nehme ich diesen. Wenn es mehr als einen Wert enthält (durch Kommas getrennt), könnte ich den ersten nehmen.

Aber was ist, wenn jemand diesen Wert manipuliert? Ich kann nicht vertrauenENV['HTTP_X_FORWARDED_FOR'] wie ich konnte mitENV['REMOTE_ADDR']. Und es gibt auch keine Liste vertrauenswürdiger Proxys, die ich verwenden könnte.

Aber da muss es seinirgendwie um die IP-Adresse des Kunden immer zuverlässig zu ermitteln. Kennst du einen?

Imihre DokumenteHeroku beschreibt dasX-Forwarded-For ist "die Ursprungs-IP-Adresse des Clients, der eine Verbindung zum Heroku-Router herstellt".

Das hört sich so an, als ob Heroku das überschreiben könnteX-Forwarded-For mit der ursprünglichen Remote-IP. Dies würde Spoofing verhindern, oder? Kann das jemand verifizieren?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage