.реврайт /.htpasswd обход, если на определенный IP-адрес
возможно ли иметь .реврайт/.настройка управления доступом htpasswd для данного каталога, но если они с определенного IP-адреса, обойти аутентификацию логин / пароль?
Я знаю, что вы можете сделать что-то подобное в .файл htaccess:
order deny,allow
deny from all
allow from 000.000.000.000
но если вы добавите что-то в этом роде:
AuthType Basic
AuthName "restricted area"
AuthUserFile /path/to/.htpasswd
require valid-user
затем он запрашивает пароль. Есть ли способ выполнить настройку типа if / else или какое-либо другое решение, чтобы пользователи как данный IP (или набор IPs) не запрашивается пароль, но все остальные это делают?
6 ответов
для версии 2.2.X вы можете использовать следующие...
AuthUserFile /var/www/mysite/.htpasswd
AuthName "Please Log In"
AuthType Basic
require valid-user
Order allow,deny
Allow from xxx.xxx.xxx.xxx
satisfy any
очевидно, замените путь к вашему файлу пользователя и ip-адресу, который вы хотели бы обойти аутентификацию.
дальнейшее объяснение специфики, можно найти по адресу:http://httpd.apache.org/docs/2.2/howto/auth.html
Если вы используете Apache >=2.4, это будет что-то вроде этого:
<If "%{REMOTE_ADDR} != '127.0.0.1'">
AuthType Basic
AuthName "restricted area"
AuthUserFile /path/to/.htpasswd
require valid-user
</If>
для получения дополнительной информации взгляните на docs.
Я запускаю Apache / 2.2.16 (Debian), и у меня была аналогичная проблема, я решил ее так:
(Это можно запустить как в an .файл htaccess или непосредственно в virtualhost под <Location/>
)
Order deny,allow
Deny from all
AuthType Basic
AuthUserFile /home/somesite/.htpasswd
AuthName "No entry, unless"
Require Valid-user
Allow from x.x.x.x
Allow from x.x.x.x
Satisfy Any
я разрешил вход без пароля с двух разных ip, а остальные должны ввести пароль для входа.
Если вы используете apache >=2.4, и вы хотите разрешить набор IP, как задано в начальном вопросе, вы можете сделать это так:
<If "-R '192.168.0.0/24'">
Require all granted
</If>
<ElseIf "-R '192.168.1.0/24'">
Require all granted
</ElseIf>
<Else>
AuthType Basic
AuthName "restricted area"
AuthUserFile /etc/apache2/.htpasswd
require valid-user
</Else>
в дополнение к ответу j5Dev:
# Interne IP-Adressen
SetEnvIf Remote_Addr "^127\.0\.0\.1$" IsIntern
SetEnvIf Remote_Addr "^192\.168" IsIntern
# .. add more IP addresses or ranges here
# Authentication, wenn nicht intern
AuthUserFile /path/to/.htpasswd
AuthName "restricted area"
AuthType Basic
require valid-user
Order allow,deny
Allow from env=IsIntern
satisfy any
Apache 2.4 совместимость:
AuthType Basic
AuthUserFile /www/.htpasswd
AuthName "Protected Area"
<RequireAny>
Require ip 1.2.3.4
Require valid-user
</RequireAny>
см. руководство по миграции обновление до 2,4 с 2,2 для получения дополнительных примеров.