PHP $ _SERVER ['HTTP_HOST'] vs. $ _SERVER ['SERVER_NAME'], czy poprawnie rozumiem strony man?
Szukałem dużo, a także czytałem PHPDokumenty $ _SERVER. Czy mam to prawo, które należy użyć w przypadku moich skryptów PHP do prostych definicji linków używanych w mojej witrynie?
$_SERVER['SERVER_NAME']
jest oparty na pliku konfiguracyjnym twojego serwera WWW (Apache2 w moim przypadku) i różni się w zależności od kilku dyrektyw: (1) VirtualHost, (2) ServerName, (3) UseCanonicalName itp.
$_SERVER['HTTP_HOST']
opiera się na żądaniu klienta.
Dlatego wydaje mi się, że właściwym do wykorzystania w celu uczynienia moich skryptów tak kompatybilnymi, jak to możliwe, będzie$_SERVER['HTTP_HOST']
. Czy to założenie jest poprawne?
Następujące komentarze:
Myślę, że trochę przeczytałem po przeczytaniu tego artykułu i zauważyłem, że niektórzy ludzie mówią, że „nie ufają żadnemu z nich$_SERVER
vars ”:
http://markjaquith.wordpress.com/2009/09/21/php-server-vars-not-safe-in-forms-or-links/
http://php.net/manual/en/reserved.variables.server.php#89567 (komentarz: Vladimir Kornea 14-mar-2009 01:06)
Najwyraźniej dyskusja dotyczy głównie$_SERVER['PHP_SELF']
i dlaczego nie powinieneś go używać w atrybucie akcji form bez odpowiedniego ucieczki, aby zapobiec atakom XSS.
Mój wniosek dotyczący mojego pierwotnego pytania brzmi: „jest bezpieczny” w użyciu$_SERVER['HTTP_HOST']
dla wszystkich linków na stronie bez obawy o ataki XSS, nawet jeśli są używane w formularzach.
Proszę popraw mnie jeżeli się mylę.