web-dev-qa-db-fra.com

Que fait vraiment "Exiger tout accordé" d'Apache?

Je viens de mettre à jour mon serveur Apache vers Apache/2.4.6 qui fonctionne sous Ubuntu 13.04. J'avais l'habitude d'avoir un fichier vhost qui avait les éléments suivants:

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

Mais quand j'ai couru, j'ai obtenu un "Interdit. Vous n'avez pas la permission d'accéder à /"

Après avoir fait un peu de recherche sur Google, j'ai découvert que pour que mon site fonctionne à nouveau, je devais ajouter la ligne suivante "Exiger que tout soit accordé" pour que mon vhost ressemble à ceci:

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

Je veux savoir si cela est "sûr" et ne pose aucun problème de sécurité. J'ai lu sur Apache's page que cela "imite la fonctionnalité fournie précédemment par les directives" Autoriser de tous "et" Refuser de tous ". Ce fournisseur peut prendre l'un des deux arguments qui sont" accordés " ou "refusé". Les exemples suivants accordent ou refusent l'accès à toutes les demandes. "

Mais cela ne disait pas si c'était un problème de sécurité ou pourquoi nous devons le faire alors que par le passé vous n'aviez pas à le faire.

98
John Crawford

La configuration du contrôle d'accès a changé en 2.4, et les anciennes configurations ne sont pas compatibles sans quelques changements. Voir ici .

Si votre ancienne configuration était Allow from all (aucune adresse IP bloquée pour accéder au service), puis Require all granted est le nouvel équivalent fonctionnel.

93
Shane Madden

Je sais que c'est un ancien poste mais je pense que je peux aider davantage avec un exemple fonctionnel que j'utilise toujours!

Dans Apache 2.2 serait comme:

    <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>

Dans Apache 2.4 serait comme:

   <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>

Soyez prudent lorsque vous utilisez l'authentification htacess , cette nouvelle syntaxe peut en faire choses mauvaises et inattendues , si tel est votre cas, veuillez lire: https://unix.stackexchange.com/questions/413309/Apache- 2-4-want-me-to-decide-require-valid-ip-or-require-valid-user et ça devrait aller!

17