PHP-Servervariablen: „HTTP_HOST“ vs. „SERVER_NAME“
Sie sind auf einige Informationen gestoßen, die darauf hindeuten, dass Sie einen der $_SERVER verwenden Variablen ist unsicher, was dazu führt, dass Sie die Angemessenheit der Verwendung von $_SERVER['HTTP_HOST'] und in Frage stellen $_SERVER['SERVER_NAME']. Lassen Sie uns die Situation klären.
Wie Sie festgestellt haben, wird $_SERVER['SERVER_NAME'] durch die Konfiguration des Webservers bestimmt, während $_SERVER['HTTP_HOST'] auf der Anfrage des Clients basiert. Diese Unterscheidung wirft die Frage auf, welche Variable für zuverlässige Linkdefinitionen auf der gesamten Website verwendet werden soll.
Während es aus Kompatibilitätsgründen logisch erscheinen mag, $_SERVER['HTTP_HOST'] zu verwenden, zeigt Chris Shifletts Artikel „SERVER_NAME Versus HTTP_HOST“. eine komplexere Situation. Apache-Webserver können für die Verwendung kanonischer Namen konfiguriert werden, um konsistente Servernamen mit SERVER_NAME sicherzustellen. Wenn diese Konfiguration jedoch nicht erzwungen wird, reicht es möglicherweise nicht aus, sich allein auf HTTP_HOST zu verlassen.
Um die Integrität Ihrer Links sicherzustellen, ziehen Sie diese Optionen in Betracht:
$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; }
Durch die Bewertung dieser Optionen und die Berücksichtigung der aufgeworfenen Sicherheitsbedenken können Sie eine fundierte Entscheidung darüber treffen, welcher Ansatz für Ihre PHP-Skripte am besten geeignet ist.
Das obige ist der detaillierte Inhalt von$_SERVER[\'HTTP_HOST\'] vs. $_SERVER[\'SERVER_NAME\']: Was sollten Sie für sichere Links verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!