2011-12-05 45 views
0

我使用$_SERVER['HTTP_HOST']來檢查我的腳本在正確的域上運行,並在非法域上運行時發送電子郵件。問題是,有時我收到不正確的警報,腳本在錯誤的域上運行。這是一個虛假警報,大寫的$_SERVER['HTTP_HOST']

首先,爲什麼會發生這種情況? 二,這是安全的檢查$_SERVER['HTTP_HOST']還是有更好的爲什麼?

注:我沒有在我的代碼中將值轉換爲小寫。

+0

這是PHP代碼嗎? – home

+0

如果你從另一個文件中包含它,那麼它可能是假的... –

+0

@home它會是如果它使用$ _SERVER。 – pgl

回答

1

$ _SERVER ['HTTP_HOST']是腳本被訪問的主機名。所以,如果有人去http://WWW.EXAMPLE.COM/它會是大寫。

這是安全的檢查,只是先用strtolower()將其轉換爲小寫。

編輯:我說這是安全的檢查,但有一個警告:使用HTTP/1.0的用戶代理不會提供Host:頭,因此$ _SERVER ['HTTP_HOST']將被取消設置。這是不太可能發生的,但如果你想防止它,請確保你編碼的可能性。

+0

,但所有網頁瀏覽器都會自動將域名轉換爲小寫字母,並且在以大寫字母輸入時不會收到警報。 – m3hdi

+0

然後,對於您發佈生成警報的代碼以及一些示例輸出,這將是一個好主意。 – pgl

+0

這是它: \t \t $valid_domain="example.com"; \t \t if(@strpos(@$_SERVER['HTTP_HOST'],$valid_domain)===FALSE) \t \t @mail('toemail', 'alert', $_SERVER['HTTP_HOST']); \t \t // I get EXAMPLE.COM sometimes in emailed alert. m3hdi

相關問題