Nginx身份验证绕过容易出错


Nginx authentication bypassed easily - wrong?

我有nginx的基本身份验证设置,如下所示:

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

如果你参观一些没有重写的东西,它就像一种魅力。

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

你知道这是怎么回事吗?

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

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

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
       ...
  } 
}