Назад | Перейти на главную страницу

Порядок htaccess Запретить, Разрешить правило

Я хочу динамически добавлять IP-адреса в черный список через htaccess. Я надеялся, что кто-нибудь скажет мне, будет ли в моем случае работать следующее (я не уверен, как тестировать через localhost).

Мой файл .htaccess по умолчанию будет иметь следующее:

order allow,deny
allow from all

IP-адреса будут добавляться динамически:

Order Deny,Allow
Allow from all
Deny from 192.168.30.1

Насколько я понимаю, это по умолчанию разрешить все с дополнительным списком запрещающих правил. Если я не ошибаюсь Order Deny,Allow сначала посмотрит список запрещенных, это правильно?

И обязательно ли должно быть правило «Разрешить от всех» в конце?

ИЗМЕНИТЬ 1

Если я не ошибаюсь, мне нужно сделать это на основе ответа Джеффатракейда:

Order Allow,Deny
Allow from all
Deny from 192.168.30.1

РЕДАКТИРОВАТЬ 2

Для полноты картины это, вероятно, больше соответствует моим требованиям:

Order Deny,Allow
Deny from 192.168.30.1

Это правило разрешает всем заходить на ваш сайт.

Order Deny,Allow
Allow from all
Deny from 192.168.30.1

В Order Директива определяет порядок, в котором обрабатываются ваши правила. С участием Order deny,allow сначала будет обработан запрещенный список, а затем разрешенный.

В Apache все правила обрабатываются, причем последнее совпадение является эффективным.

Итак, в этом случае ваше последнее правило будет allow from all.

Это означает, что 192.168.30.1 сначала будет отклонено, но затем разрешено, поскольку разрешающие правила обрабатываются в последнюю очередь.

Это даст тот же результат

Order Deny,Allow
Allow from all
Deny from 192.168.30.1
Allow from 192.168.30.1

Подумайте об этом так.

  • Правила разрешения / запрета - это просто отдельные списки разрешенных / запрещенных IP-адресов.
  • В order Директива определяет порядок, в котором эти списки обрабатываются.
  • Apache оценивает все правила и действует в соответствии с результатом последнего совпадающего правила.

Основная путаница заключается в том, что это сильно отличается от того, как работают межсетевые экраны, где порядок правил и первое совпадение часто определяют доступ.

Видеть: http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#order