我使用$_SERVER['HTTP_HOST']
來檢查我的腳本在正確的域上運行,並在非法域上運行時發送電子郵件。問題是,有時我收到不正確的警報,腳本在錯誤的域上運行。這是一個虛假警報,大寫的$_SERVER['HTTP_HOST']
。
首先,爲什麼會發生這種情況? 二,這是安全的檢查$_SERVER['HTTP_HOST']
還是有更好的爲什麼?
注:我沒有在我的代碼中將值轉換爲小寫。
我使用$_SERVER['HTTP_HOST']
來檢查我的腳本在正確的域上運行,並在非法域上運行時發送電子郵件。問題是,有時我收到不正確的警報,腳本在錯誤的域上運行。這是一個虛假警報,大寫的$_SERVER['HTTP_HOST']
。
首先,爲什麼會發生這種情況? 二,這是安全的檢查$_SERVER['HTTP_HOST']
還是有更好的爲什麼?
注:我沒有在我的代碼中將值轉換爲小寫。
$ _SERVER ['HTTP_HOST']是腳本被訪問的主機名。所以,如果有人去http://WWW.EXAMPLE.COM/它會是大寫。
這是安全的檢查,只是先用strtolower()將其轉換爲小寫。
編輯:我說這是安全的檢查,但有一個警告:使用HTTP/1.0的用戶代理不會提供Host:頭,因此$ _SERVER ['HTTP_HOST']將被取消設置。這是不太可能發生的,但如果你想防止它,請確保你編碼的可能性。
,但所有網頁瀏覽器都會自動將域名轉換爲小寫字母,並且在以大寫字母輸入時不會收到警報。 – m3hdi
然後,對於您發佈生成警報的代碼以及一些示例輸出,這將是一個好主意。 – pgl
這是它: \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
這是PHP代碼嗎? – home
如果你從另一個文件中包含它,那麼它可能是假的... –
@home它會是如果它使用$ _SERVER。 – pgl