2012-07-09 97 views
5

PHP變量$ _SERVER ['SERVER_NAME']是僞造還是僞造的?我打算將它作爲表單發佈的安全措施。我會檢查以確保變量是我的網站名稱(www.example.com)。我知道HTTP_REFERRER可能是僞造的,但我不確定這個。

謝謝!

+1

無論它將永遠是相同的..你的服務器。不是請求來自的服務器。 – sachleen 2012-07-09 01:45:14

回答

2

它不能僞造,persay,但它會總是返回您的網站名稱。如果您使用同一個腳本運行多個站點,並根據所提供的主機名稱使用其他數據庫,這很有用。

PHP documentation說:

'SERVER_NAME' 
    The name of the server host under which the current script is executing. If the script is running on a virtual host, this will be the value defined for that virtual host. 
+3

「SERVER_NAME」與「HTTP_HOST」混淆。 – BalusC 2012-07-09 01:46:31

3

由訪問者通常不能僞造。但我懷疑你會想要強制執行某個SERVER_NAME來許可腳本,以便它們只能被特定的域使用。在這種情況下答案是肯定的,這個變量肯定可以僞造

原因很簡單,服務器設置這個值。在大多數情況下,您會將PHP作爲Apache模塊運行,但有時您還有其他Apache模塊,有時候您使用NGINX或IIS以CGI模式運行PHP,有時您甚至會將PHP作爲CLI作爲子進程分支部署在雲中的內置服務器。這些服務器將負責設置該變量。

另外,總是有人工分配。

$_SERVER['SERVER_NAME'] = ... // this can go above all your scripts