2012-04-27 45 views
6

我有一個數據庫充滿了網站的網址,主要關鍵是網站的$_SERVER["HTTP_HOST"]

當用戶導航到...可以說www.my-epic-example-url.com,它將連接數據庫並使用該網站的$_SERVER["HTTP_HOST"],然後獲取所有引用該網站的數據!

我想知道的是,$_SERVER["HTTP_HOST"]有多安全?

它可以外部修改嗎?

我問的唯一原因是因爲我讀的ARTICAL了一段時間後(不能記住它在哪裏)說當使用$ _ SERVER,因爲它是不安全要小心...

這是真的嗎?

+2

[其中$ _SERVER變量是安全的?]的可能重複(http://stackoverflow.com/questions/6474783/which-server-variables-are-safe) – mellamokb 2012-04-27 12:31:21

+0

請不要關閉它作爲愚蠢,它現在一個循環引用,因爲我從[哪些$ _SERVER變量是安全的?](http://stackoverflow.com/questions/6474783/which-server-variables-are-safe)鏈接到這裏來詳細解釋'HTTP_HOST' 。 – deceze 2012-04-27 12:59:25

回答

13

$_SERVER["HTTP_HOST"]是從客戶端發送的HTTP Host標頭。這使得這個標題一般不安全

但是,如果你是在一個典型的虛擬主機設置在網絡服務器決定執行基於虛擬主機的配置,而這又是通過HTTP Host頭觸發,你的腳本,腳本應該沒有得到,除非執行在該標題中收到了已列入白名單的值。

如果Web服務器不關心Host標頭並針對任何請求和所有請求執行某個腳本,那麼此值可能是絕對的任何值。

+0

你應該將這些添加到你的綜合答案中。你不具體解釋那裏的VirtualHost部分。 – 2012-04-27 12:52:20

+3

完成,從另一個提到這個答案。 :) – deceze 2012-04-27 12:59:47

+0

請注意,它們是繞過VirtualHost限制的已知方法,例如在HTTP請求中使用絕對URI,這會導致免費播放Host標頭。所以*通常不安全*是非常真實的。 – regilero 2014-09-05 07:55:20

相關問題