我想达到以下结果:
这是我正在使用的 nginx 配置:
server {
listen 80 default;
# Basic auth
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
satisfy any;
# IP whitelist
include /etc/nginx/conf.d/ip-whitelist.conf.include;
deny all;
# Lock down the "hello" directory to specific IP addresses
location /hello/ {
# Developers only - ever!
allow 12.34.56.78;
deny all;
}
# ...
}
Run Code Online (Sandbox Code Playgroud)
目前发生的事情是上面项目符号列表中的第 1 点和第 2 点正在工作 - 即白名单中的任何 IP 都没有跨站点的基本身份验证,但如果 IP 未列入白名单,则会提示他们进行基本身份验证。
然而,“hello”的位置块似乎不起作用,并且仍然允许“hello”目录下的任何内容具有与上述相同的条件,例如,如果我尝试/hello/world.php从列入白名单的 IP访问,它会被提供。如果我从非白名单 IP 访问它,我将获得基本身份验证。
我想阻止 IP 以外的所有人访问“hello”目录12.34.56.78(示例)。 …
因此,为了帮助防止对我的 phpmyadmin 安装的暴力攻击,我将 nginx 配置为需要 HTTP 基本身份验证(额外的用户名和密码),然后请求需要来自列入白名单的 IP 地址。但是,如果我运行https://example.com/phpmyadmin/,IP地址白名单工作正常,但是如果不添加额外的 .php 块,我可以加载https://example.com/phpmyadmin/index.php而不将我的 IP 列入白名单。此问题不会影响 HTTP 基本身份验证。发生这种情况有原因吗?无论如何要避免添加额外的 .php 块?phpmyadmin 配置区域的副本如下。
# Setup and secure phpMyAdmin
location /phpmyadmin/ {
allow 1.2.3.4;
deny all;
auth_basic "phpMyAdmin - HTTP Basic Login";
auth_basic_user_file /etc/nginx/pma_pass;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
allow 1.2.3.4;
deny all;
}
}
Run Code Online (Sandbox Code Playgroud) 我为目录 / 设置了基本身份验证,并想排除位置 /assets/upload,但它不起作用,我尝试了几个选项和教程。
此 Location 指令清除目录身份验证配置并禁用整个网站的基本身份验证:
<Directory "/">
AuthType Basic
AuthName "Staging"
AuthUserFile /var/.../.htpasswd
AuthGroupFile /dev/null
Require valid-user
</Directory>
<Location "/">
Order deny,allow
Allow from all
Satisfy any
</Location>
Run Code Online (Sandbox Code Playgroud)
但是,我只希望 /assets/upload 没有基本身份验证,但是如果我将 Location 的第一个参数更改为 /assets/upload,则整个页面,包括 /assets/upload 都受基本身份验证...
<Location "/assets/upload">
Order deny,allow
Allow from all
Satisfy any
</Location>
Run Code Online (Sandbox Code Playgroud)
这里可能有什么问题?
版本:Apache/2.2.16 (Debian)
我正在使用 HTTPS + 基本身份验证来保护资源。如何限制身份验证尝试以防止暴力攻击?
我使用 Nginx 作为 python WSGI web-app 的反向代理。
它看起来像这样:
location / {
#auth_basic "Administrator Login";
#auth_basic_user_file /var/www/static/.htpasswd;
proxy_pass http://mywebapp_gunicorn;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Run Code Online (Sandbox Code Playgroud)
在 Web 应用程序内部,我有一些管理员页面,我希望受到很好的保护,所以现在我在 Web 应用程序内部使用了一些身份验证来保护它们,我也想添加 Nginx 身份验证。
如何激活:
auth_basic "Administrator Login";
auth_basic_user_file /var/www/static/.htpasswd;
Run Code Online (Sandbox Code Playgroud)
对于 path: /managers,但不适用于所有其他 URL。
nginx authentication http-authentication http-basic-authentication
我有一些站点的目录受 http 基本身份验证保护,这些目录是通过 .htaccess 文件与 .htpasswd 文件配对实现的。我注意到密码以“et!”结尾 我可以通过省略“t!”或替换!与 1。
我的 .htaccess 文件的内容:
AuthType Basic
AuthName "administration"
AuthUserFile /var/www/conf/mysitename.com.pw
require valid-user
Run Code Online (Sandbox Code Playgroud)
我在 mysitename.com.pw 中有两个用户。
显然,这种行为是不想要的。知道发生了什么吗?
使用 IIS 6 或 7,基本身份验证是否允许两个人使用相同的用户名/密码组合同时访问站点?
我正在开发具有公共和私有部分的 Symfony 3.4 应用程序。但是,我目前正在为此应用程序设置一个只能由授权用户访问的临时系统,因此我在整个应用程序前面放置了一个 .htaccess 基本身份验证。
应用程序中有一条路由需要由不提供身份验证的外部应用程序访问。我只想为这条单一路由禁用 .htaccess 身份验证。此路由的所有 URL 都采用/api/post-result/123where123是任意 ID的形式。
在四处搜索之后,我试图通过Require expr我的 .htaccess 中的一个条目来解决这个问题,该条目将简单地匹配 URL。但是,由于 Symfony 进行 URL 重写,REQUEST_URI在服务器(以及我的情况)中始终显示为“app.php”。我尝试了其他变量,例如QUERY_STRINGor PATH_INFO,但它们似乎都没有包含我的实际请求 URI。然后我尝试使用重写规则将匹配的 URI 放入环境变量中。但是,这似乎无法通过表达式读取。
这是我的 .htaccess 文件
DirectoryIndex app.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteRule ^(.*)$ %{ENV:BASE}/app.php [L,E=SFURI:$1] # <-- env variable is set here
</IfModule>
<IfModule !mod_rewrite.c> …Run Code Online (Sandbox Code Playgroud) nginx ×3
apache-2.2 ×2
whitelist ×2
.htaccess ×1
apache-2.4 ×1
http ×1
iis ×1
password ×1
phpmyadmin ×1
rewrite ×1