Protéger un répertoire
Par Damien, mardi 15 mars 2005 à 18:37 :: Apache :: #24 :: rss
Lorsque l'on écrit des scripts, il ne faut pas oublier l'aspect sécurité, entre autre en protégeant les parties administration par mot de passe. Sous Apache, cela peut se faire en utilisant des fichiers .htaccess.
1- Principe
Pour cela nous allons utiliser deux fichiers : un fichier .htaccess pour indiquer au serveur de protéger le répertoire par mot de passe, et un fichier mot de passe (par convention .htpasswd) pour stocker les logins et mots de passe.
2- Fichier .htpasswd
Commençons par créer le fichier dans lequel on va stocker les informations sur les utilisateurs autorisés.
Commande htpasswd
Si vous pouvez accéder au serveur par SSH (ou telnet), il existe une commande permettant d'ajouter automatiquement un utilisateur dans le fichier .htpasswd.
htpasswd -c .htpasswd utilisateur
Ou, si le fichier existe déjà :
htpasswd .htpasswd utilisateur
Vous pouvez utiliser plusieurs types de cryptage des mots de passe, à l'aide des options suivantes :
| Option | Type de cryptage |
| -d | Utilise la fonction système crypt, basée sur le DES. 8 caractères maximum |
| -m | Utilise l'algorithme de hachage MD5. |
| -s | Utilise l'algorithme de hachage SHA1. |
Note : L'option -d (peu recommandée) est utilisée par défaut.
Edition manuelle
Mais vous pouvez également le faire manuellement. Un fichier .htpasswd est structuré tel quel :
utilisateur:mot_de_passe_crypte autre_utilisateur:autre_mot_de_passe_crypte
Il y a donc un utilisateur par ligne, composée du login suivi du signe "deux points", puis d'un mot de passe crypté. Voir le tableau plus haut pour la liste des modes de cryptage possibles.
Pour crypter le mot de passe vous pouvez utiliser ce script : http://igalaxie.com/utils/crypt.php
Imaginons que l'on veuille autoriser paul et pierre, ayant respectivement pour mot de passe poire et pomme (quelle créativité ;o)).
paul:TGGkwpqcDfY52 pierre:rpViM37EXGz1A
Puis, luc et olivier, beaucoup plus rigoureux, qui choisissent les mots de passe 'Ux/T1Xgm8 et (0a5)qjs+D utilisant respectivement les modes de cryptage md5 et sha1 :
paul:TGGkwpqcDfY52
pierre:rpViM37EXGz1A
luc:$1$X9aQKS1A$gMvl6iycb1WiONnzxPYKb1
olivier:{SHA}a0fd046e5da24826ba36de0bf0ad8cbaa4f2de1a
3- Fichier .htaccess
Le fichier .htaccess permet d'indiquer au serveur web que l'on souhaite protéger notre répertoire par mot de passe. Sa syntaxe à utiliser peut varier en fonction de votre hébergeur.
En général
Dans la plupart des cas, on utilisera la syntaxe suivante :
AuthUserFile /home/www/chemin/.htpasswd AuthGroupFile /dev/null AuthName "Acces Restreint" AuthType Basic <Limit GET POST> require valid-user </Limit>
AuthUserFile donne le chemin du fichier mot de passe, tandis que AuthName définit le message affiché dans la fenêtre d'identification. Le Limit indique que tout le répertoire est protégé.
Il est également possible de protéger uniquement certains fichiers (en ajoutant autant de Files que de fichiers à protéger).
AuthUserFile /home/www/chemin/.htpasswd AuthGroupFile /dev/null AuthName "Acces Restreint" AuthType Basic <Files admin.php> require valid-user </Files> <Files effacer.php> require valid-user </Files>
Sous Cobalt
Sous Cobalt la syntaxe est un peu différente :
order allow,deny allow from all require valid-user AuthUserFile /home/www/chemin/.htpasswd AuthPAM_Enabled off AuthName "Acces Restreint" AuthType Basic
Free / Online
Chez Free / Online la syntaxe diffère également :
PerlSetVar AuthFile secret/passlist AuthName "Acces Restreint" AuthType Basic <Limit GET POST> require valid-user </Limit>
Pour en savoir plus sur Online et Free, vous pouvez également consulter le site de Proxad.
4- Conclusion
Et voilà ! Ce n'est pas plus compliqué, et tellement utile.
Sachez qu'il existe des scripts permettant de gérer tout ceci automatiquement. Je vous laisse chercher, en fonction de vos besoins.

Commentaires
1. Le samedi 26 mars 2005 à 17:08, par scaraber
2. Le mardi 29 mars 2005 à 16:28, par Damien
3. Le vendredi 17 juin 2005 à 15:14, par Kosty
4. Le vendredi 17 juin 2005 à 18:30, par Damien
5. Le lundi 27 juin 2005 à 16:15, par lamarmotte
6. Le mardi 5 juillet 2005 à 18:10, par Silver
7. Le mardi 26 juillet 2005 à 23:11, par To(_)Mo(_)
8. Le mardi 2 août 2005 à 10:42, par fred
9. Le lundi 15 août 2005 à 01:32, par papanoel
10. Le jeudi 8 septembre 2005 à 02:09, par yann
11. Le jeudi 8 septembre 2005 à 02:11, par yann
12. Le mercredi 5 octobre 2005 à 16:44, par flint
13. Le samedi 22 octobre 2005 à 20:34, par JC
14. Le mercredi 9 novembre 2005 à 09:35, par Didier
15. Le jeudi 12 janvier 2006 à 16:21, par FrenchConneXion
16. Le lundi 23 janvier 2006 à 23:26, par ktone
17. Le vendredi 17 mars 2006 à 19:39, par TM
18. Le jeudi 30 mars 2006 à 15:24, par didou
19. Le samedi 13 mai 2006 à 07:48, par SPY
20. Le samedi 13 mai 2006 à 07:54, par SPY
21. Le dimanche 18 juin 2006 à 09:32, par Federal Employment Verification
22. Le samedi 1 juillet 2006 à 21:17, par papyresiste
23. Le jeudi 7 septembre 2006 à 12:23, par Liloune
24. Le dimanche 1 octobre 2006 à 07:43, par Jojo
25. Le dimanche 1 octobre 2006 à 07:59, par Loulou
26. Le samedi 9 décembre 2006 à 00:41, par Seb
27. Le mercredi 24 janvier 2007 à 23:40, par Bastan
28. Le mardi 12 juin 2007 à 17:01, par janvier18
29. Le mardi 3 juillet 2007 à 01:39, par ddd
30. Le mercredi 4 juillet 2007 à 22:31, par fripou44
31. Le mercredi 4 juillet 2007 à 22:36, par Fripou 44
32. Le vendredi 21 septembre 2007 à 20:31, par Herbivor
33. Le mardi 25 septembre 2007 à 18:37, par omanos
34. Le samedi 5 janvier 2008 à 00:40, par test qi
35. Le vendredi 1 février 2008 à 15:47, par Glouton
36. Le samedi 24 janvier 2009 à 16:51, par epinoche
37. Le vendredi 13 février 2009 à 11:03, par Lutin_radioactif
38. Le mercredi 25 mars 2009 à 11:19, par Antibug
39. Le lundi 22 juin 2009 à 05:54, par alexis10
Ajouter un commentaire