Wie verwende ich HTTP_X_FORWARDED_FOR richtig?

Okay, ich habe einen kleinen Authentifizierungs-Problem. Meine web-service ermöglicht es, eine Verbindung zu meinem API über HTTP mit einem Benutzernamen und Kennwort, aber diese Verbindung kann auch beschränkt sein auf eine bestimmte IP-Adresse.

Dies bedeutet, dass die $_SERVER['REMOTE_ADDR'] kann falsch sein. Ich weiß schon, dass Sie alle IP-Informationen können Sie niemals ganz verlassen werden - ich habe die Einschränkung nur in einem Versuch, fügen Sie eine weitere Schicht der Sicherheit.

Wenn dies der Allgemeine überblick über eine Anfrage zu meinem web-server:

clientSERVER => clientPROXY => myPROXY => mySERVER

Ist, dann bedeutet dies, dass mySERVER zeigt REMOTE_ADDR von myPROXY statt, der client und sendet die aktuelle IP des Clients als HTTP_X_FORWARDED_FOR.

Überwinden, meine web-service hat eine Liste von "trusted proxy" die IP-Adressen und wenn REMOTE_ADDR ist von einem dieser vertrauenswürdigen IP-Adressen, dann sagt es meine web-service, der die tatsächliche IP-Adresse ist der Wert, der HTTP_X_FORWARDED_FOR.

Nun das problem mit clientPROXY. Dies bedeutet, dass (sehr oft) mySERVER bekommt HTTP_X_FORWARDED_FOR Wert, der mehrere IP-Adressen hat. Nach HTTP_X_FORWARDED_FOR Dokumentation, der Wert ist eine Komma-getrennte Liste von IP-Adressen, von denen die erste IP ist die eigentliche echte client-und jede IP-Adresse ist, die von einem proxy.

So, wenn HTTP_X_FORWARDED_FOR hat mehrere Werte, und mein Dienst ist der IP-Bereich eingeschränkt ist, muss ich überprüfen Sie die 'Letzte' Wert HTTP_X_FORWARDED_FOR gegen meine erlaubten IP-Liste und ignorieren die tatsächliche client-IP?

Ich gehe davon aus, dass in einem system, wo habe ich die Liste der zulässigen IP-Adressen, die in der Whitelist die IP-Adresse sollte sein, dass ein proxy und nicht eine IP hinter dem proxy (denn das könnte eine localhost-IP-und ändern sich Häufig).

Und was HTTP_CLIENT_IP?

InformationsquelleAutor der Frage kingmaple | 2012-07-12

Schreibe einen Kommentar