PHP 伺服器變數:'HTTP_HOST' 與'SERVER_NAME'
您遇到了一些信息,建議使用任何$_SERVER變數是不安全的,導致您質疑使用$_SERVER['HTTP_HOST']和$_SERVER['SERVER_NAME']。讓我們澄清一下情況。
如您所知,$_SERVER['SERVER_NAME'] 由網頁伺服器的設定決定,而 $_SERVER['HTTP_HOST'] 是基於客戶端的請求。這種區別提出了使用哪個變數來實現網站範圍內的可靠連結定義的問題。
雖然使用 $_SERVER['HTTP_HOST'] 來實現相容性似乎合乎邏輯,但 Chris Shiflett 的文章“SERVER_NAME Versus HTTP_HOST”揭示了更複雜的情況。 Apache Web 伺服器可以設定為使用規格名稱,確保伺服器名稱與 SERVER_NAME 一致。但是,如果不強制執行此配置,僅依靠 HTTP_HOST 可能還不夠。
為了確保連結的完整性,請考慮以下選項:
$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; }
透過評估這些選項並考慮提出的安全問題,您可以就哪種方法最適合您的 PHP 腳本做出明智的決定。
以上是$_SERVER[\'HTTP_HOST\'] 與 $_SERVER[\'SERVER_NAME\']:您應該使用哪一個來實現安全連結?的詳細內容。更多資訊請關注PHP中文網其他相關文章!