Sunfox


Protection par htaccess

La protection par htaccess est la méthode la plus simple et la plus sûre pour protéger rapidement d’un mot de passe des pages web.

Vous avez un serveur sur Apache et vous voulez interdire l’accès d’un dossier à tout le monde ? Il suffit pour cela de créer quelques fichiers.

.htpasswd

Ce fichier est nommé .htpasswd et contient par exemple :

robert:88uH/tR/WKOwI
meuh:2597DugpwDsSw
looser:93Pq8KOCEadqk

C’est à dire une liste de login:mot-de-passe très simple. Mais attention le mot-de-passe étant crypté il faut le coder avant de l’inclure, en utilisant un générateur d’htpasswd en ligne par exemple.

Placez ce fichier où bon vous semble sur le serveur.

.htgroup

Ce fichier ne vous servira que si vous voulez créer des groupes d’utilisateurs.
Placé souvent à côté du .htpasswd, il contiendra par exemple :

admins: robert meuh
famille: meuh
visiteurs: looser gamoren

.htaccess

Ce fichier sera placé dans le dossier à protéger, c’est lui qui dictera les règles de passage vers vos pages. Il contiendra par exemple :

AuthName "Administration privée"
AuthUserFile /usr/local/bin/www/.htpasswd
AuthGroupFile /dev/null
AuthType Basic

require valid-user
  • le texte après AuthName sera affiché dans la boîte de dialogue lors de la demande d’authentification
  • l’adresse après AuthUserFile est le chemin complet (entendez chemin réel sur le serveur) jusqu’à votre fichier .htpasswd
  • L’adresse après AuthGroupFile est le chemin complet jusqu’à votre fichier .htgroup si vous en utilisez un, sinon laisser /dev/null

Le require signifie que ne seront accéptés que les personnes listées à la suite.

require user robert meuh

Dans cet exemple par exemple, seuls robert et meuh pourront accéder au dossier.

require group admins
require group famille

Ici seuls ceux appartenant au groupes admins et famille (définis dans .htgroup) pourront passer la barrière.

La valeur valid-user permettra ici à quiconque sera présent dans le .htpasswd d’accéder au dossier protégé.

Authentification par le domaine

L’on peut aussi autoriser ou interdire l’accès selon le domaine de l’utilisateur. Il suffit de remplacer les conditions d’entrée dans l’.htaccess par :

order deny,allow
deny from all
allow from .fr
allow from .tecp.be

Ici les domaines .fr et .tecp.be pourront accéder car ils sont précédés d’allow (accepter), les autres non car l’on a spécifié la clause deny from all (refuser les autres). L’on peut ainsi de cette façon intervertir, et avoir par exemple allow from all et deny from .be. Cette méthode a l’intérêt de ne pas avoir besoin de fichier .htpasswd et de se faire sans demande de mot de passe à chaque fois.

De même l’on peut mélanger authentification par mot de passe et authentification par domaine et avoir :

order deny,allow
deny from all
allow from .tecp.be
require user gamoren
satisfy any

Ici personne ne peut y accéder sauf si l’utilisateur vient du domaine .tecp.be ou l’utilisateur est gamoren. Gamoren a de la chance, il pourra donc se connecter de n’importe où avec son mot de passe mais sera automatiquement reconnu s’il est chez lui.

Si à la place de satisfy any on avait satisfy all, il faudrait que l’utilisateur soit gamoren et qu’il ait comme domaine .tecp.be.

Sur fichiers

Pour ne protéger que quelques fichiers il suffit d’entourer tout le code à inserer dans l’.htaccess par <Files secret.html perso.jpg> et </Files> pour empêcher l’accès à secret.html et perso.jpg.

Utilisation

On peut utiliser l’htaccess pour se réserver l’accès à quelques fichiers sur un serveur mais si on veut de nombreux utilisateurs, devoir éditer un fichier à chaque fois peut devenir rapidement contraignant. Des scripts PHP ou CGI peuvent par contre très bien s’en charger.

Limitations

Cette protection est très efficace mais attention tout de même car d’autres failles indépendantes du .htaccess peuvent permettre l’accès aux fichiers protégés, ou encore peuvent permettre l’édition du fichier .htpasswd. Et bien sûr comme tout mot de passe, celui-ci peut être découvert sur un bout de papier ou divulgué par la torture…

Liens

2 Commentaires

  1. 1 4sky :

    Merci beaucoup pour ce petit tutorial vraiment bien fait :-)

  2. 2 4sky :

    Ah oui, j’ai oublier de le signaler :
    Pour le paramètre AuthName, il faut mettre entre double quote le texte.

👨🏻‍🦰 Sunny Ripert

est un développeur web vivant à ParisContactArchives

Textes et contenus sous licence Creative Commons.