Apache. Документация на русском


Разделы:   1    2    3    4    5      6      7    8    9    10    11    12    13    14    15    16  

Раздел 6. Руководства, учебные пособия и инструкции

Пункты:   49      50      51    52    53    54    55    56  

 <         > 
  RU            EN  

Пункт 50. Контроль доступа

Контроль доступа относится к любым средствам управления доступом к любому ресурсу. Это отдельно от аутентификации и авторизации.

Связанные модули и директивы

Контроль доступа может осуществляться несколькими различными модулями. Наиболее важными из них являются mod_authz_core и mod_authz_host . Также в этом документе обсуждается управление доступом с использованием mod_rewrite .

Контроль доступа хостом

Если вы хотите ограничить доступ к частям вашего сайта на основе адреса хоста ваших посетителей, это проще всего сделать с помощью mod_authz_host .

Предоставляет Require множество различных способов разрешить или запретить доступ к ресурсам. В сочетании с директивами RequireAll , RequireAny , и RequireNone эти требования могут комбинироваться произвольно сложными способами, чтобы обеспечить соблюдение любой вашей политики доступа.

Директивы Allow , Deny и Order , предоставляемые mod_access_compat , устарели и будут удалены в будущей версии. Вам следует избегать их использования и избегать устаревших руководств, рекомендующих их использование.

Использование этих директив:

 Требовать адрес хоста
Требовать ip ip.address 

В первой форме адрес представляет собой полное доменное имя (или частичное доменное имя); при желании вы можете указать несколько адресов или доменных имен.

Во второй форме ip.address — это IP-адрес, частичный IP-адрес, пара сеть/сетевая маска или спецификация сеть/nnn CIDR. Можно использовать адреса IPv4 или IPv6.

Дополнительные примеры этого синтаксиса см. в документации по mod_authz_host.

Вы можете вставить not , чтобы отменить конкретное требование. Обратите внимание, что, поскольку a not является отрицанием значения, оно не может использоваться само по себе, чтобы разрешить или отклонить запрос, поскольку не true не составляет false . Таким образом, чтобы запретить посещение с помощью отрицания, в блоке должен быть один элемент, который оценивается как истина или ложь. Например, если у вас есть кто-то, кто рассылает спам на вашу доску объявлений, и вы хотите, чтобы он не вмешивался, вы можете сделать следующее:

 <ТребоватьВсе>
 Требовать все предоставленные
 Требовать не ip 10.252.46.165
</RequireAll> 

Посетители, приходящие с этого адреса ( 10.252.46.165 ), не смогут увидеть контент, подпадающий под действие этой директивы. Если вместо этого у вас есть имя машины, а не IP-адрес, вы можете использовать его.

 Не требовать хоста host.example.com
  

А если вы хотите заблокировать доступ со всего домена, вы можете указать только часть адреса или доменного имени:

 Требовать не ip 192.168.205
Не требовать размещения phishers.example.com moreidiots.example
Требовать не размещать правительство 

Директивы RequireAll , RequireAny , и RequireNone могут использоваться для реализации более сложных наборов требований.

Контроль доступа по произвольным переменным

Используя <If> , вы можете разрешить или запретить доступ на основе произвольных переменных среды или значений заголовка запроса. Например, чтобы запретить доступ на основе пользовательского агента (типа браузера), вы можете сделать следующее:

 <Если "%{HTTP_USER_AGENT} == 'BadBot'">
 Требовать все отказано
</Если> 

Используя Require expr синтаксис, это также можно записать так:

 Требуется выражение %{HTTP_USER_AGENT} != 'BadBot' 

Предупреждение:

Контроль доступа с помощью User-Agent — ненадежный метод, так как User-Agent заголовок может быть установлен на что угодно, по прихоти конечного пользователя.

См. документ по выражениям для дальнейшего обсуждения того, какие синтаксисы выражений и переменные вам доступны.

Контроль доступа с mod_rewrite

Флаг [F] RewriteRule вызывает отправку ответа 403 Forbidden. Используя это, вы можете запретить доступ к ресурсу на основе произвольных критериев.

Например, если вы хотите заблокировать доступ к ресурсу с 8 вечера до 7 утра, вы можете сделать это с помощью mod_rewrite .

 RewriteEngine включен
RewriteCond "%{TIME_HOUR}" ">=20" [ИЛИ]
RewriteCond "%{TIME_HOUR}" "<07"
Правило перезаписи "^/холодильник" "-" [F] 

Это вернет ответ 403 Forbidden для любого запроса после 8 вечера или до 7 утра. Этот метод можно использовать для любых критериев, которые вы хотите проверить. Вы также можете перенаправить или иным образом переписать эти запросы, если этот подход предпочтительнее.

Директива <If> , добавленная в 2.4, заменяет многие вещи, которые mod_rewrite традиционно использовались для выполнения, и вам, вероятно, следует сначала заглянуть туда, прежде чем прибегать к mod_rewrite.

Больше информации

Механизм выражений дает вам большие возможности для выполнения множества действий на основе произвольных серверных переменных, и вам следует обратиться к этому документу за более подробной информацией.

Кроме того, вы должны прочитать mod_authz_core документацию для примеров объединения множественных требований доступа и указания того, как они взаимодействуют.

См. также руководство по аутентификации и авторизации.



 <         > 

Пункты:   49      50      51    52    53    54    55    56  

Рейтинг@Mail.ru