【问题标题】:Nginx authentication bypassed easily - wrong?Nginx 身份验证很容易绕过 - 错了吗?
【发布时间】:2013-11-26 02:56:12
【问题描述】:

我有像这样的 nginx 基本身份验证设置:

server {
    ...
    location / {    
           ...
           auth_basic "Restricted";
           auth_basic_user_file /etc/nginx/htpasswd;
           ...
    } 
}

如果您访问未重写的内容,它就像一个魅力。

如果我访问一个 .php 文件,它会加载它,就像不需要身份验证一样。之后,重新编写的页面上的身份验证也会变得随机。

你知道这是怎么回事吗?

回顾: 访问 www.mysite.com 和身份验证工作! 访问 www.mysite.com/index.php 并绕过身份验证,在不询问用户/密码的情况下启动网站。

编辑: 我还需要将相同的 auth_basic 内容添加到位置 ~ .php { ... } 吗?我认为将它添加到根目录可以处理所有后续结构,无论脚本语言等如何。

【问题讨论】:

    标签: php authentication nginx


    【解决方案1】:

    Nginx 基本身份验证适用于您放置它的位置。

    请注意,对于每个请求,nginx 只会选择一个位置。这意味着在location / 块内放置一个命令,该命令将仅针对该位置执行(这意味着您的请求不会被任何其他位置块捕获)。如果您希望基本身份验证适用于服务器中的每个位置,只需将其放在每个位置中,甚至更好地放在服务器块中,就像这样

    server {
      auth_basic "Restricted";
      auth_basic_user_file /etc/nginx/htpasswd;
      ...
      location / {
           #auth_basic already active, no need to add it again
           ...
      } 
    }
    

    【讨论】:

      猜你喜欢
      • 2014-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-19
      • 2012-01-03
      • 2017-04-09
      • 2010-11-27
      相关资源
      最近更新 更多