.htaccess Order Allow,Deny или Deny,Allow
Директива Order, вместе с директивами Allow и Deny, контролирует трёх-шаговую систему контроля доступа. Первый шаг обрабатывает или все директивы Allow, или все директивы Deny. Второй шаг разбирает оставшуюся директиву (Deny или Allow). Третий шаг принимает все запросы, которые не соответствуют ни первой, ни второй.
Директивы, Allow и Deny, обрабатываются, нетипично поведению сетевых экранов (firewall), где используется только первая директива. Результирующим является последнее соответствие (также нетипично поведению сетевых экранов).
Дополнительно, порядок, в котором строки следуют в конфигурационном файле не существенен — все строки Allow выполняются как единая группа, все строки Deny, соответственно, как другая группа, и умолчательное состояние рассматривается отдельно.
Порядок может быть одним из:
В нижеприведённом примере, всем хостам в подсети 192.168.1.* доступ разрешён.
Директивы, Allow и Deny, обрабатываются, нетипично поведению сетевых экранов (firewall), где используется только первая директива. Результирующим является последнее соответствие (также нетипично поведению сетевых экранов).
Order Deny,Allow Deny from all Allow from 192.168.1.*В данном примере, если пытаться следовать логике firewall, запрет доступа реализован для всех хостов, и разрешение 192.168.1.* не сработает, в то время, как в соответствии с принципами рассматриваемых конфигурационных файлов apache (в том числе cupsd.conf) доступ хостам из подсети 192.168.1.* разрешён.
Дополнительно, порядок, в котором строки следуют в конфигурационном файле не существенен — все строки Allow выполняются как единая группа, все строки Deny, соответственно, как другая группа, и умолчательное состояние рассматривается отдельно.
Порядок может быть одним из:
- Allow,Deny
Сперва, проверяются все директивы Allow; по крайней мере одна должна соответствовать, или запрос отвергается. Далее, провеляются все директивы Deny. Если какие-либо соответствуют, то запрос отвергается. В конце, любой запрос, который не соответствует директиве Allow или Deny отвергается по умолчанию.
- Deny,Allow
Сперва, проверяются все директивы Deny; если какая-либо соответствует, то запрос отвергается, если нет соответствия в директиве Allow. Любой запрос, который не соответствует директиве Allow или Deny пропускается.
Соответствие | Результат Allow,Deny | Результат Deny,Allow |
Соответствует только Allow | Запрос разрешён | Запрос разрешён |
Соответствует только Deny | Запрос отклонён | Запрос отклонён |
Нет соответствий | По умолчанию действует вторая директива: отклонён | По умолчанию действует вторая директива: разрешён |
Соответствуют обе Allow & Deny | Управляет конечное соответствие: отклонён | Управляет конечное соответствие: разрешён |
В нижеприведённом примере, всем хостам в подсети 192.168.1.* доступ разрешён.
Order Deny,Allow Deny from all Allow from 192.168.1.*В следующем примере, всем хостам из подсети 192.168.1.* доступ разрешён, за исключением хостов 192.168.1.5 и 192.168.1.24, всем другим хостам из других подсетей доступ запрещён, т.к. для сервера состояние по умолчанию Deny, отказать в доступе.
Order Allow,Deny Allow from 192.168.1.* Deny from 192.168.1.5 Deny from 192.168.1.24С другой стороны, если порядок в директиве Order в последнем примере поменять на Deny,Allow, всем хостам доступ будет разрешён. Это случится потому, что не считая актуальным следование директив в конфигурационном файле, данная директива Allow из 192.168.1.* будет сверена последней, и перекроет отказ в доступе с 192.168.1.5 и 192.168.1.24 директивы Deny. Всем хостам не из 192.168.1.* также будет разрешён доступ, т.к. состояние по умолчанию — Allow.
Прочли: 20926 | Добавлено: 30 июня 2011 | На главную