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

Что на самом деле делает Apache «Требовать все предоставлено»?

Я только что обновил свой сервер Apache до Apache / 2.4.6, который работает под Ubuntu 13.04. Раньше у меня был файл vhost, в котором было следующее:

<Directory "/home/john/development/foobar/web">
    AllowOverride All 
</Directory>

Но когда я запустил это, я получил "Запрещено. У вас нет разрешения на доступ /"

После небольшого поиска в Google я обнаружил, что для того, чтобы мой сайт снова заработал, мне нужно добавить следующую строку «Требовать все разрешено», чтобы мой виртуальный хост выглядел так:

<Directory "/home/john/development/foobar/web">
    AllowOverride All 
    Require all granted
</Directory>

Я хочу знать, является ли это "безопасным" и не вызывает ли никаких проблем с безопасностью. Я читал на Apache страница что это "имитирует функциональность, которая была ранее предоставлена ​​директивами" Разрешить от всех "и" Запрещать от всех ". Этот поставщик может принимать один из двух аргументов:" разрешено "или" отклонено ". Следующие примеры будут предоставлять или отклонять доступ ко всем запросам ".

Но в нем не говорилось, было ли это какой-то проблемой безопасности или почему мы должны это делать сейчас, тогда как раньше вам не приходилось этого делать.

Конфигурация управления доступом изменилась в версии 2.4, и старые конфигурации несовместимы без некоторых изменений. Видеть Вот.

Если ваша старая конфигурация была Allow from all (нет IP-адресов, заблокированных для доступа к услуге), затем Require all granted новый функциональный эквивалент.

Я знаю, что это старый пост, но я думаю, что могу больше помочь с функциональным примером, который я всегда использую!

В apache 2.2 будет примерно так:

    <Location />
       Order deny, allow
       allow from all
    </Location>
    <Location /adm>
        Order deny, allow
        deny from all
        allow from myniceip
    </Location>
    <Location /disabled>
        Order deny, allow
        deny from all
    </Location>

В apache 2.4 будет примерно так:

   <Location />
       require all granted
    </Location>
   #Note that you dont need to use require all denied
   #to require only a group of ips.. 
    <Location /adm>
        require ip myniceip
    </Location>
    <Location /disabled>
        Require all denied
    </Location>

Будь осторожен при использовании аутентификации htacess, этот новый синтаксис может плохие и неожиданные вещи, если это ваш случай, прочтите: https://unix.stackexchange.com/questions/413309/apache-2-4-wants-me-to-decide-require-valid-ip-or-require-valid-user и все должно быть хорошо!