我使用通配符子域爲我們的每個用戶提供一個頁面username.domain.com。
註冊時,用戶名本身已經過正確的清理。
爲了簡化這個問題的目的,假設我有一個針對所有請求運行的PHP腳本。它獲取域組件使用...
$domain_components = explode('.', $_SERVER['SERVER_NAME']);
...然後彈出tld,主域和子域。
問題是,我是否需要將$_SERVER['SERVER_NAME']
變量的內容,特別是域組件視爲潛在的敵意?直覺上來說,我認爲不會,因爲PHP和Apache必須像我在做代碼之前做的那樣做得很好(並且this answer好像確認了它,因爲變量是在服務器控制之下的),但是我想確定我沒有忽略任何東西。
您是否知道通過$_SERVER['SERVER_NAME']
發現的任何已知攻擊?
(我使用PHP 5.3.9和Apache 2.2.3。)
其中大部分都是。請記住,諸如$ _SERVER ['HTTP_USER_AGENT']'這樣的東西可以由客戶端修改。 – ceejayoz 2012-02-02 18:46:18
謝謝。正如ceejayoz指出的那樣,許多在客戶端控制下的$ _SERVER變量並非如此。我在問題中提到的答案很好地闡述了這一點。 http://stackoverflow.com/a/6474936/123749 – Greg 2012-02-02 18:50:13