Повторяет "Отклонить от хххх" и "Разрешить от всех" правильно
Я использую следующий синтаксис для блокировки некоторых IP-адресов из моего файла.htaccess:
DirectoryIndex index.php
order allow,deny
deny from 17.18.19.0
deny from 18.17.19.1
allow from all
и теперь я не уверен, смогу ли я вообще использовать это:
DirectoryIndex index.php
order allow,deny
deny from 18.17.19.1
allow from all
deny from 18.15.19.1
allow from all
deny from 18.18.19.1
allow from all
так я могу просто повторить эту структуру?
deny from x.x.x.x
allow from all
почему я спрашиваю? Потому что я нашел php-скрипт, который просто добавляет "Отклонить" в конце файла, и я не уверен, что мне нужна строка "разрешить из всех".
это может быть просто так?
DirectoryIndex index.php
order allow,deny
allow from all
deny from 17.18.19.0
deny from 18.17.19.1
deny from ... etc.
1 ответ
Прежде всего, эта страница документации хорошо объясняет вещи.
Следующая цитата взята из документации mod_authz_host
Директива Order вместе с директивами Allow и Deny управляет трехпроходной системой контроля доступа. При первом прохождении обрабатываются все директивы Allow или все Deny, как указано в директиве Order. Второй проход анализирует остальные директивы (Запретить или Разрешить). Третий проход применяется ко всем запросам, которые не соответствуют ни одному из первых двух.
Обратите внимание, что все директивы Allow и Deny обрабатываются, в отличие от типичного брандмауэра, где используется только первое совпадение. Последнее совпадение является эффективным (в отличие от типичного межсетевого экрана). Кроме того, порядок появления строк в файлах конфигурации не имеет значения - все разрешенные строки обрабатываются как одна группа, все запрещающие строки рассматриваются как другая, а состояние по умолчанию рассматривается само по себе.
Другими словами, если у вас есть Order Allow,Deny
сначала все обработает Allow
директивы, то все Deny
директивы. Вы, вероятно, можете понять, что это не имеет значения, если у вас есть 1 Allow from all
или 100 Allow from all
директивы. Окончательный результат тот же, но при наличии 100 из этих директив вашему серверу потребуется больше времени для обработки. Затем он обработает все запрещающие директивы и при необходимости перезапишет только что выданное разрешение.
Поэтому вам просто нужен Order Allow,Deny
директива и только одна Allow from all
директивы. Какой бы скрипт вы ни использовали, можете просто добавить Deny
директивы, как он считает нужным, и все будет работать, как ожидалось.