<-
Apache > Serveur HTTP > Documentation > Version 2.4 > How-To / Tutoriels

Contr�le d'acc�s

Langues Disponibles:  en  |  fr 

Le contr�le d'acc�s fait r�f�rence � tout concept de contr�le d'acc�s � une ressource quelconque. Il est distinct du processus d'authentification et d'autorisation.

Voir aussi

top

Modules et directives concern�s

Plusieurs modules peuvent intervenir dans le contr�le d'acc�s. Les plus importants sont mod_authz_core et mod_authz_host. Ce document illustre aussi comment utiliser mod_rewrite pour le contr�le d'acc�s.

top

Contr�le d'acc�s en fonction de l'h�te du client

Si vous souhaitez restreindre l'acc�s � certaines parties de votre site web en fonction de l'addresse de l'h�te de vos visiteurs, le plus simple pour y parvenir consiste � utiliser le module mod_authz_host.

La directive Require permet d'accorder ou d'interdire l'acc�s � certaines ressources de diff�rentes mani�res. Ces crit�res d'acc�s, en conjonction avec les directives RequireAll, RequireAny, et RequireNone, peuvent �tre combin�s d'une mani�re suffisamment complexe pour satisfaire votre politique de contr�le d'acc�s.

Les directives Allow, Deny, et Order fournies par le module mod_access_compat sont obsol�tes, et sont appel�es � dispara�tre dans les versions futures. Il est donc d�conseill� de les utiliser, et de se fier aux tutoriels qui recommandent leur utilisation.

Les directives Require s'utilisent comme suit :

Require host address
Require ip ip.address

Dans la premi�re forme, nom-h�te est un nom de domaine pleinement qualifi� (fqdn), ou un nom de domaine partiel ; vous pouvez sp�cifier plusieurs noms de domaines, si vous le d�sirez.

Dans la seconde forme, adresse-ip est une adresse IP compl�te, une adresse IP partielle, une paire r�seau/masque de sous-r�seau ou une sp�cification CIDR de la forme r�seau/nnn. Il est possible de sp�cifier des adresses IPv4 ou IPv6.

Voir la documentation de mod_authz_host pour d'autres exemples de cette syntaxe.

Vous pouvez ins�rer le mot-cl� not pour inverser un crit�re particulier. Notez que le mot not �tant la n�gation d'une valeur, il ne peut pas �tre utilis� pour autoriser ou interdire une requ�te, car non vrai ne sera pas interpret� par httpd comme faux. Ainsi, pour interdire la visite d'une page � l'aide d'une n�gation, le bloc doit contenir un �l�ment �valu� � vrai ou faux. Par exemple, si quelqu'un est en train d'inonder votre forum de messages ind�sirables, vous pouvez ajouter cette ligne pour lui refuser l'acc�s :

<RequireAll>
    Require all granted
    Require not ip 10.252.46.165
</RequireAll>

Les visiteurs poss�dant cette adresse (10.252.46.165) ne pourront pas voir le contenu concern� par cette directive. Si vous voulez interdire l'acc�s � une machine en fonction de son nom, vous pouvez ajouter ceci :

Require not host host.example.com
    

Et si vous voulez interdire l'acc�s � un domaine particulier, vous pouvez sp�cifier des adresses IP partielles ou des noms de domaine, comme ceci :

Require not ip 192.168.205
Require not host phishers.example.com moreidiots.example
Require not host gov

Les directives RequireAll, RequireAny, et RequireNone permettent �galement de pr�ciser des crit�res d'acc�s plus complexes.

top

Contr�le d'acc�s en fonction de variables arbitraires

Vous pouvez accorder ou refuser l'acc�s en fonction de variables d'environnement arbitraires ou de valeurs d'en-t�tes de la requ�te en utilisant la directive <If>. Par exemple, pour interdire l'acc�s en fonction du user-agent (le type de navigateur), vous pouvez sp�cifier ceci :

<If "%{HTTP_USER_AGENT} == 'BadBot'">
    Require all denied
</If>

La syntaxe expr de la directive Require permet de r��crire l'exemple pr�c�dent de la mani�re suivante :

Require expr %{HTTP_USER_AGENT} != 'BadBot'

Avertissement :

Contr�ler l'acc�s en fonction de l'en-t�te User-Agent n'est pas une technique fiable, car cet en-t�te peut �tre d�fini � une valeur quelconque, selon le bon vouloir de l'utilisateur.

Voir le document � propos des expressions pour une description plus approfondie des syntaxes d'expressions et des variables disponibles.

top

Utilisation de mod_rewrite pour le contr�le d'acc�s

Le drapeau [F] de la directive RewriteRule permet d'envoyer une r�ponse de type 403 Forbidden. Il vous permet donc d'interdire l'acc�s � une ressource en fonction d'un crit�re arbitraire.

Par exemple, pour bloquer l'acc�s � une ressources entre 20h et 6h du matin, vous pouvez utiliser mod_rewrite :

RewriteEngine On
RewriteCond "%{TIME_HOUR}" ">=20" [OR]
RewriteCond "%{TIME_HOUR}" "<07"
RewriteRule "^/fridge"     "-" [F]

Toute requ�te arrivant apr�s 20h ou avant 7h du matin provoquera l'envoi d'une r�ponse de type 403 Forbidden. Vous pouvez utiliser cette technique pour v�rifier toutes sortes de crit�res. En outre, si vous le pr�f�rez, vous pouvez rediriger ou r��crire la requ�te.

Notez que la directive <If>, introduite � partir de la version 2.4, permet de remplacer le module mod_rewrite dans de nombreuses situations o� il �tait traditionnellement utilis�, et il sera probablement pr�f�rable pour vous de tenter de l'utiliser avant de vous tourner vers mod_rewrite.

top

Informations compl�mentaires

Le moteur d'expressions vous fournit une grande puissance d'action en fonction de variables du serveur arbitraires, et il vous est conseill� de consulter le document correspondant pour plus de d�tails.

De m�me, vous devez lire la documentation du module mod_authz_core pour des exemples de combinaison de crit�res d'acc�s multiples, et en particulier la mani�re dont ces derniers interagissent.

Voir aussi le How-To Authentification and autorisation.

Langues Disponibles:  en  |  fr 

top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.