Apache-2.2

如何防止 Apache 洩露使用者密碼?

  • April 17, 2020

當使用 Apache 的基本身份驗證(特別是通過 LDAP,但也通過 htpasswd)時,它使 REMOTE_USER 變數可用於下面的 PHP / Ruby / Python 程式碼——這對於將身份驗證解除安裝到 Web 伺服器非常有用。

在我們的辦公環境中,我們有很多內部應用程序通過 SSL 像這樣工作,都非常安全。但是:Apache 將 PHP_AUTH_USER (=REMOTE_USER) 和 PHP_AUTH_PW 變數暴露給 PHP 內的任何應用程序。(PHP_AUTH_PW 包含使用者輸入的明文密碼。)這意味著應用程序可以獲取使用者名和密碼。大概相同的資訊可用於 Python 和 Ruby(目前這三個都在使用;PHP 正在逐步淘汰)。

那麼如何防止 Apache 這樣做呢?

一種想法是使用 Kerberos 協商身份驗證(它不會公開密碼並且具有 SSO 的優勢),但對於某些瀏覽器(Chrome 和某些情況下是 Firefox)會自動回退到 Basic,從而導緻密碼再次公開.

以防有人像我一樣偶然發現這個問題:

在 Apache 2.4.5 及更高版本中,您可以使用該AuthBasicFake指令來屏蔽密碼:

AuthBasicFake toto tata

結果是:

PHP_AUTH_USER=toto
PHP_AUTH_PWD=tata

保留使用者名:

AuthBasicFake %{REMOTE_USER} tata

結果是:

PHP_AUTH_USER=value-of-remote-user 
PHP_AUTH_PWD=tata

REMOTE_USER 不受影響。

似乎不可能,但請參閱http://bytes.com/topic/php/answers/798619-prevent-setting-php_auth_pw

Post #8 建議使用 auto_prepend_file 執行取消設置變數的腳本

這是一種解決方法不是一個乾淨的解決方案,但它存在…

你試過 AuthType Digest 嗎?

引用自:https://serverfault.com/questions/148154