2017-06-29 31 views
1

CGI specification定義了REMOTE_USER服務器屬性,其中包含已認證用戶的名稱。

例如,在Apache上,這可能通過.htpasswd身份驗證提供,而在IIS上可能通過Active Directory處理。無論哪種情況,Web服務器都會處理認證,並在認證成功時將認證用戶的名稱傳回給PHP。 (如果不成功或取消,腳本將永遠不會運行。)

我的問題:我們可以依賴這個變量嗎?即如果它存在(並且非空白,我猜)是否可以安全地假設認證已成功通過,並且提供的名稱是用於認證的名稱?

特別,我很擔心是否有到該服務器的屬性注入到在認證未能成行,或惡搞的值,使之包含比通過用戶名以外的東西的情況下我的PHP腳本的可能性認證。

回答

1

我們可以依靠這個變量嗎?

是的,你可以依賴於你的服務器的正確配置。

我很擔心是否有此服務器屬性注入到我的PHP腳本

可以欺騙,但只有從服務器端的可能性。例如,通過類似的.htaccess線:

SetEnv REMOTE_USER foo 

或者直接在PHP中,如:

$_SERVER['REMOTE_USER'] = 'foo'; 

所以,如果你的攻擊者可以遠程更改你的.htaccess文件或你的PHP源代碼,那麼用戶標識欺騙你的問題最少。

相關問題