Wie erkennt man, ob es auf localhost ausgeführt wird?

8

Ich habe ein PHP-Skript, mit dem ich herausfinden möchte, ob der Benutzer auf einem lokalen Computer läuft, auf den nicht über das Internet zugegriffen werden kann. Zurzeit überprüfe ich die Serveradresse auf 127.0.0.1. Ist das die beste Praxis oder gibt es einen besseren Weg?

    
Alex Dunae 01.01.2011, 02:42
quelle

3 Antworten

13

Localhost wird immer in die Loopback-IP-Adresse 127.0.0.1 in IPv4 oder ::1 in IPv6 übersetzt. Daher wäre die Validierung der IP in Ihrer Anwendung sicher, wenn Sie

meinen %Vor%

Ich bezweifle sehr, dass Sie nach Ihrem Port 80 ein Team von Elite-Hackern haben werden, aber als Nebenbemerkung gibt es einige Diskussionen über Fehler bei der Verwendung einer IP-Adresse, da TCP-Pakete geändert werden können.

Aber das sollte dir keine Sorgen machen.

    
RobertPitt 01.01.2011, 02:50
quelle
6

Ich bin mir nicht sicher, ob die Antworten soweit sind, aber ich bin vielleicht verwirrt. Ich reagiere insbesondere auf den Teil Ihrer Frage, der "nicht über das Internet zugänglich" lautet. Hier ist mein Versuch einer Antwort:

Der Webserver, nicht PHP, überwacht einen Socket und akzeptiert Verbindungen. PHP kann Informationen über die Verbindung von $ _SERVER ( Ссылка ) erhalten. Beachten Sie, dass alles, was Sie überprüfen, von wo die Verbindung kam - Sie können nichts darüber erfahren, ob Ihr Server über andere IP-Adressen von $ _SERVER verfügbar ist. Zum Beispiel kann ich auf meine lokale Instanz von Apache / PHP über eines der folgenden zugreifen:

Wenn Ihr Plan ist, dass sich die App anders verhalten soll, wenn Sie den "korrekten" Wert in $ _SERVER ["SERVER_ADDR"] sehen, sind Sie wahrscheinlich ziemlich sicher - dh es ist unwahrscheinlich, dass ein Benutzer sie manipulieren könnte von einem Remote-Client.

Nachdem all dies gesagt wurde, würde ich keine dieser Techniken für die Authentifizierung von Benutzern oder die Autorisierung von Benutzerberechtigungen / -aktionen für eine bereitgestellte Anwendung, die über das Internet verfügbar ist, verwenden. Die einzige Ausnahme wäre, wenn Sie eine ganze App haben, die nur verfügbar ist, wenn Sie von localhost aus zugreifen - dann ist diese Technik wahrscheinlich sinnvoll und sicher genug für eine persönliche App.

    
Erick 01.01.2011 03:32
quelle
0

Sie können auch den Hostnamen localhost überprüfen, aber wenn die Serveradresse 127.0.0.1 lautet, sollte sie aufgelöst werden. Dies ist bei ipv4 Standard. Auf ipv6 können Sie :: 1 überprüfen, wie Robert Pitt vorschlägt.

    
Joshua Herman 01.01.2011 02:50
quelle

Tags und Links