Контроль доступа к моему серверу определяется следующим образом:
Order allow,deny
Allow from 127.0.0.1
И это работает так, как я хочу. Сначала разрешен доступ только с локальной машины, а затем все остальное запрещается. Но я нашел множество примеров, которые могли бы сделать что-то вроде этого:
Order deny,allow
Deny from all
Allow from 127.0.0.1
В этом больше смысла. Сначала запрещается любой доступ, а затем разрешается только локальный доступ.
Мой вопрос: эквивалентны ли они и делают ли они одно и то же? Они такие, какими я их вижу, но я просто хочу убедиться, что они точно такие же. Если нет, то чем они отличаются и какой из них мне выбрать, чтобы разрешить доступ только к моей локальной машине?
Да, они эквивалентны в том смысле, что дают одинаковый результат, разрешая доступ только из 127.0.0.1. Позвольте процитировать соответствующую часть из документация по директиве заказа.
Разрешить, запретить
Сначала оцениваются все директивы Allow; хотя бы одно должно совпадать, иначе запрос будет отклонен. Затем оцениваются все директивы Deny. Если какие-либо совпадения, запрос отклоняется. Наконец, любые запросы, которые не соответствуют директивам Allow или Deny, по умолчанию отклоняются.
Запретить, разрешить
Сначала оцениваются все директивы Deny; в случае совпадения запрос отклоняется, если он также не соответствует директиве Allow. Разрешены любые запросы, не соответствующие директивам Allow или Deny.
Я не верю, что они на самом деле одинаковы, потому что в вашем первом примере вы явно не запрещаете какие-либо хосты (не знаете, какие настройки Apache по умолчанию используются, если вообще что-либо).
Второй, более обычный пример, который вы показали, правильно разрешает доступ к веб-серверу только локальному хосту. Это связано с тем, что директивы управления доступом в Apache применяются в порядке, используемом порядок директива. Таким образом, при использовании «deny, allow» сначала применяются директивы deny, а затем любые директивы allow. В этом случае сначала блокируются все хосты, затем разрешается 127.0.0.1. Больше ничего не может войти, кроме localhost. Если вы измените только порядок «разрешить, запретить», это будет означать, что сначала 127.0.0.1 разрешено, а затем все хосты заблокированы. Это означает, что никто вообще не может получить доступ к веб-серверу (даже локальному хосту)!
Подумайте об этом как о белом / черном списке. В случае "запретить, разрешить" с Запретить от всех по сути, вы создаете белый список пользователей, которым вы хотите иметь доступ к серверу, причем каждый Разрешить от X вы добавляете. Если вы использовали "разрешить, запретить" с Разрешить от всех и добавление Запретить с X вы создаете черный список людей, которым вы специально не хотите иметь доступ к веб-серверу.