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ę.

questionAnswers(9)

yourAnswerToTheQuestion