Nginx身份验证很容易绕过 - 错了吗?

时间:2013-11-25 18:43:44

标签: php authentication nginx

我有这样的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 {...}的位置吗?我认为将它添加到根管理所有后续结构,无论脚本语言等。

1 个答案:

答案 0 :(得分:2)

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