Назад | Перейти на главную страницу

Директива Apache Limit не работает должным образом

Я хочу использовать «Ограничение», чтобы разрешить GET и POST на страницу, требующую аутентификации, только с определенных сайтов. Мне нужна аутентификация для GET и POST с определенного IP-адреса, который должен иметь доступ без аутентификации.

<Limit GET POST>
allow from allowableSite.com
</Limit>

Это не работает. Все неавторизовано

<Limit GET POST>
allow from all
</Limit>

Это тоже не работает. Все еще не авторизовано (401)

Единственное, что проходит аутентификацию, - это

<Limit GET POST>
satisfy any
</Limit>

Тогда любой GET или POST будет успешным ... Но это не то, что я хочу, поскольку я хочу, чтобы доступ был доступен только с определенного сайта. И «разрешить» не работает должным образом. Могло ли что-то быть настроено где-то еще, что вызывает такое поведение? Любая помощь очень ценится.

Это немного сложно, не видя больше вашей конфигурации .. Поскольку Satisfy исправил, я предполагаю, что есть Require применяется к этому месту. В Satisfy any директива делает так, что соответствие либо Allow (с вашим исходным хостом) или Require (с вашим пользователем) разрешит доступ.

Использование имени хоста с Allow является первоначальным подозреваемым; это зависит от безупречности прямого и обратного DNS для клиента. Мне не совсем понятно, что вы подразумеваете под «только с определенных сайтов»; вам нужно для Allow Директива должна включать все разрешенные клиентские системы. Если все их прямые и обратные DNS не совпадают в точности с тем, что вы указали, то это сломает их.

Кроме того, ваше использование <Limit> зависит от наличия Deny from all вне блока, чтобы ограничить другие методы .. так что если Order установлен на Allow,Deny, это сломает его. <LimitExcept> лучше, когда это возможно, поскольку вы можете более четко указать блокировку нежелательных методов; <Limit> рискует непреднамеренным доступом сверху.

Я собираюсь явно определить вещи, которые у вас, вероятно, есть где-то еще, но я хочу убедиться, что что-то из другого места не может их сломать (кроме Deny; убедитесь, что наверху нет лишних ..):

Order Allow,Deny
# allowed subnet
Allow from 10.5.1.0/24
# allowed host
Allow from 86.12.76.12

AuthType Basic
AuthName "blah"
AuthUserFile /path/to/htpasswd
Require valid-user

Satisfy all

<LimitExcept GET POST>
    Deny from all
</LimitExcept>