Mar*_*ais 5 authentication apache-2.2
在 Apache 中使用基本身份验证(特别是通过 LDAP,但也通过 htpasswd)时,它使 REMOTE_USER 变量可用于下面的 PHP/Ruby/Python 代码——这对于将身份验证卸载到网络服务器非常有用。
在我们的办公环境中,我们有许多内部应用程序通过 SSL 像这样工作,而且都非常安全。但是:Apache 将 PHP_AUTH_USER (=REMOTE_USER) 和 PHP_AUTH_PW 变量暴露给 PHP 中的任何应用程序。(PHP_AUTH_PW 包含用户输入的明文密码。)这意味着应用程序可以获取用户名和密码。大概相同的信息可用于 Python 和 Ruby(所有三个当前都在使用;PHP 正在逐步淘汰)。
那么我怎样才能阻止 Apache 这样做呢?
一种想法是使用 Kerberos Negotiate 身份验证(它不会公开密码并具有作为 SSO 的好处),但对于某些浏览器(Chrome 和某些情况下是 Firefox),它会自动回退到 Basic,从而导致密码再次公开.
小智 4
以防万一有人像我一样偶然发现这个问题:
在 Apache 2.4.5 及更高版本中,您可以使用该AuthBasicFake
指令来屏蔽密码:
AuthBasicFake toto tata
Run Code Online (Sandbox Code Playgroud)
结果是:
PHP_AUTH_USER=toto
PHP_AUTH_PWD=tata
Run Code Online (Sandbox Code Playgroud)
要保留用户名:
AuthBasicFake %{REMOTE_USER} tata
Run Code Online (Sandbox Code Playgroud)
结果是:
PHP_AUTH_USER=value-of-remote-user
PHP_AUTH_PWD=tata
Run Code Online (Sandbox Code Playgroud)
REMOTE_USER 不受影响。