$_SERVER[\'HTTP_HOST\'] vs. $_SERVER[\'SERVER_NAME\']: Was sollten Sie für sichere Links verwenden?

Barbara Streisand
Freigeben: 2024-11-24 21:53:35
Original
320 Leute haben es durchsucht

$_SERVER['HTTP_HOST'] vs. $_SERVER['SERVER_NAME']: Which Should You Use for Secure Links?

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:

  • Canonical erzwingen Namen: Konfigurieren Sie Apache für die Verwendung kanonischer Namen und stellen Sie sicher, dass SERVER_NAME immer den richtigen Server bereitstellt
  • Hostnamen validieren: Verwenden Sie eine Whitelist, um zu überprüfen, ob der im HTTP_HOST-Header angegebene Hostname gültig ist. Beispiel:
$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

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage