Php 是否考虑';远程用户';$服务器';安全';?

Php 是否考虑';远程用户';$服务器';安全';?,php,apache,authentication,iis,cgi,Php,Apache,Authentication,Iis,Cgi,定义REMOTE\u USERserver属性,该属性包含经过身份验证的用户的名称 例如,在Apache上,这可能通过.htpasswd身份验证提供,而在IIS上,这可能通过Active Directory处理。在任何一种情况下,web服务器都会处理身份验证,如果身份验证成功,则会将经过身份验证的用户的名称传递回PHP。(如果失败或取消,脚本将永远不会运行。) 我的问题是:我们能依赖这个变量吗?i、 e.如果它存在(我猜是非空的),是否可以安全地假设身份验证已成功通过,并且提供的名称是用于身份验

定义
REMOTE\u USER
server属性,该属性包含经过身份验证的用户的名称

例如,在Apache上,这可能通过.htpasswd身份验证提供,而在IIS上,这可能通过Active Directory处理。在任何一种情况下,web服务器都会处理身份验证,如果身份验证成功,则会将经过身份验证的用户的名称传递回PHP。(如果失败或取消,脚本将永远不会运行。)

我的问题是:我们能依赖这个变量吗?i、 e.如果它存在(我猜是非空的),是否可以安全地假设身份验证已成功通过,并且提供的名称是用于身份验证的名称

特别是,我担心在没有进行身份验证的情况下,是否有可能将此服务器属性注入我的PHP脚本,或者欺骗该值,使其包含通过身份验证的用户名以外的内容

我们可以依赖这个变量吗

是的,您可以依赖服务器的正确配置

我担心是否有可能将这个服务器属性注入到我的PHP脚本中

可以对其进行欺骗,但只能从服务器端进行。例如,通过如下接入线路:

SetEnv REMOTE_USER foo
或者直接使用PHP,如:

$_SERVER['REMOTE_USER'] = 'foo';
因此,如果攻击者可以远程更改您的.htaccess文件或PHP源代码,那么用户ID欺骗是您的最小问题