【问题标题】:Can $_SERVER['REMOTE_USER'] be spoofed?$_SERVER['REMOTE_USER'] 可以被欺骗吗?
【发布时间】:2012-10-17 19:39:19
【问题描述】:

我有一种情况,我正在打开基于 $_SERVER['REMOTE_USER'] 变量的文件。我不认为这是可以欺骗的,但只想确认一下。我不想让自己容易受到任意文件的读取:

   <?
      $user = $_SERVER['REMOTE_USER'];
      $fp = fopen("./$user.png","r");
   ?>

【问题讨论】:

    标签: php security cgi


    【解决方案1】:

    是的,该用户名是远程用户指定的。

    您还需要验证密码。如果密码是由您的服务器而非您的应用程序验证的,那么您可能没问题。

    【讨论】:

    • @MichaelBerkowski,是的,让我澄清一下...$_SERVER 中的任何内容都来自服务器,但 REMOTE_USER 密钥中显示的内容直接来自为身份验证提供的客户端信息。
    • 是的,但是如果没有成功的身份验证,服务器不会填充 REMOTE_USER,因此在没有其他安全故障的情况下不能任意填充。
    • @MichaelBerkowski,“在没有其他安全故障的情况下”是一种方式......配置服务器以接受所有内容并将其传递给您的应用程序是另一种方式。当然,PHP_AUTH_USER 通常用于此目的,但我至少见过一种情况,服务器会传递所有内容并让应用程序处理它。
    • 在 $_SERVER 中唯一可以信任的是 REMOTE_ADDR,这只是到达您的服务器之前的最终端点,例如用户的代理服务器/nat 网关,而不是他们的实际 IP。
    • 在我的代码运行阶段强烈暗示用户已正确验证。用户甚至无法到达运行我的脚本的目录,而无需强制登录页面。谢谢。
    猜你喜欢
    • 2018-07-27
    • 1970-01-01
    • 2013-08-21
    • 2015-05-07
    • 2015-09-15
    • 2010-10-12
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多