Подтвердить что ты не робот

.htaccess, порядок разрешить, отрицать, отрицать от всех: confused?

В моем .htaccess у меня есть следующее:

<Limit GET POST>
order deny,allow
deny from all
allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>
<Files .htaccess>
order allow,deny
deny from all
</Files>

Теперь, я просто глуп или что-то не так? Я смотрел онлайн и в документации Apache и не понимал limit get post put delete и т.д., Но я полагал, что все, что он делает, говорит, чтобы разрешить, после того, как разрешило это снова отрицать? Это просто не имеет смысла для меня, и я не уверен, что я должен удалить его из .htaccess или исправить, если это неправильно? Я предполагаю, что третий означает отказ в доступе к файлу .htaccess, но этот порядок позволяет затем отклонить, кажется, что он сначала разрешает, а затем сразу же отрицает.

4b9b3361

Ответ 1

Это довольно запутанный способ использования директив конфигурации Apache.

Технически, первый бит эквивалентен

Allow From All

Это связано с тем, что Order Deny,Allow делает директиву Deny оценкой перед Разрешающими директивами. В этом случае Deny и Allow конфликтуют друг с другом, но Allow, будучи последним оцененным, будет соответствовать любому пользователю, и доступ будет предоставлен.

Теперь, чтобы четко прояснить ситуацию, такая конфигурация BAD и ее следует избегать любой ценой, поскольку она граничит с поведением undefined.

Секции Limit определяют, какие HTTP-методы имеют доступ к каталогу, содержащему файл .htaccess.

Здесь методы доступа GET и POST разрешены, а методам PUT и DELETE запрещен доступ. Здесь ссылка, объясняющая, какие существуют различные методы HTTP: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

Однако, это более чем бесполезно использовать эти ограничения, если у вас нет настраиваемых сценариев CGI или модулей Apache, которые непосредственно обрабатывают нестандартные методы (PUT и DELETE), поскольку по умолчанию Apache не обрабатывает их вообще.

Следует также отметить, что существует несколько других методов, которые также могут выполняться с помощью Limit, а именно CONNECT, OPTIONS, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK и UNLOCK.

Последний бит также бесполезен, поскольку любая правильно настроенная установка Apache содержит следующую часть конфигурации (для Apache 2.2 и более ранних версий):

#
# The following lines prevent .htaccess and .htpasswd files from being 
# viewed by Web clients. 
#
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy all
</Files>

который запрещает доступ к любому файлу, начинающемуся с ".ht".

Эквивалентная конфигурация Apache 2.4 должна выглядеть так:

<Files ~ "^\.ht">
    Require all denied
</Files>