Heim > Backend-Entwicklung > PHP-Tutorial > $_SERVER[\'HTTP_HOST\'] vs. $_SERVER[\'SERVER_NAME\']: Welches ist die richtige Hostnamen-Variable für PHP?

$_SERVER[\'HTTP_HOST\'] vs. $_SERVER[\'SERVER_NAME\']: Welches ist die richtige Hostnamen-Variable für PHP?

DDD
Freigeben: 2024-12-04 06:13:16
Original
331 Leute haben es durchsucht

$_SERVER['HTTP_HOST'] vs. $_SERVER['SERVER_NAME']: Which is the Right Hostname Variable for PHP?

Bestimmen der richtigen Hostnamen-Variable für PHP-Skripte

Beim Definieren von Links in Ihren PHP-Skripten ist die Auswahl der geeigneten Variable für den Hostnamen von entscheidender Bedeutung . Früher wurde angenommen, dass $_SERVER['HTTP_HOST'] verwendet werden sollte, da es auf der Anfrage des Clients basiert, während $_SERVER['SERVER_NAME'] auf der Konfigurationsdatei Ihres Servers basiert und variieren kann.

Allerdings gibt es, wie in Chris Shifletts Artikel „SERVER_NAME Versus HTTP_HOST“ erwähnt, keine eindeutige Antwort. Nur indem Sie Apache zwingen, den kanonischen Namen zu verwenden, können Sie mit SERVER_NAME konsistent den richtigen Servernamen abrufen.

In Situationen, in denen dies nicht möglich ist, können Sie die Implementierung eines Whitelist-Ansatzes in Betracht ziehen:

$allowed_hosts = array('foo.example.com', 'bar.example.com');
if (!isset($_SERVER['HTTP_HOST']) || !in_array($_SERVER['HTTP_HOST'], $allowed_hosts)) {
    header($_SERVER['SERVER_PROTOCOL'].' 400 Bad Request');
    exit;
}
Nach dem Login kopieren

Bei dieser Methode wird der Hostname anhand einer vordefinierten Liste zulässiger Werte überprüft. Wenn der Hostname nicht in der Liste vorhanden ist, wird ein Fehler zurückgegeben.

Es ist wichtig zu beachten, dass $_SERVER['HTTP_HOST'] zwar eine flexiblere Wahl zu sein scheint, aber anfällig für Manipulationen sein kann böswillige Akteure. Dies kann die Sicherheit Ihrer Anwendung gefährden.

Daher hängt die beste Entscheidung von Ihren spezifischen Anforderungen und Sicherheitsüberlegungen ab. Wenn Sie einen zuverlässigen und konsistenten Servernamen benötigen, kann es erforderlich sein, die Kanonisierung von Hostnamen in Ihrer Serverkonfiguration zu erzwingen und $_SERVER['SERVER_NAME'] zu verwenden. Alternativ bietet der Whitelist-Ansatz mit $_SERVER['HTTP_HOST'] eine flexiblere, aber möglicherweise weniger sichere Option.

Das obige ist der detaillierte Inhalt von$_SERVER[\'HTTP_HOST\'] vs. $_SERVER[\'SERVER_NAME\']: Welches ist die richtige Hostnamen-Variable für PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage