Version sans cache

Mise en cache désactivé. Réglage défaut pour cette page : actif (code DEF204)
Si l'affichage est trop lent, vous pouvez désactiver le mode utilisateur pour visualiser la version en cache.

Générateur de mots de passe



Ce document nous permet de crypter nos mots de passe selon les algorithmes MD5, SHA-1, ou Crypt.

La restriction d'accès par mot de passe

Un site Web est un moyen très pratique pour partager des informations, mais dans certains cas l'accès à ces informations doit être restreint à certaines personnes seulement (par exemple pour des zones réservées à certains membres, ou des fonctions d'administrations du site).

Si nous désirons empêcher l'accès à un répertoire, ou en limiter l'accès à certaines personnes, nous pouvons utiliser le fichier .htaccess, pour peu que notre hébergement soit sur un serveur Apache, ou que notre serveur soit compatible avec le serveur NCSA.

Le fonctionnement est simple et s’appuie sur deux autres fichiers qui contiendront les noms et mots de passe des personnes autorisées à accéder au contenu du répertoire, et les groupes d'utilisateurs.
Pourquoi ne pas placer ces renseignements directement dans le fichier .htaccess ? Simplement parce que ce fichier ne sert pas simplement à la gestion des accès, mais propose de nombreuses fonctionnalités supplémentaires (url-rewriting, la réécriture des url; gestion des pages d'erreurs, etc.).

L'avantages du fichier .htaccess, c'est qu'il est placés directement dans le répertoire pour lequel nous désirons modifier certains comportements (attention que les modifications portent par défaut sur tous les sous répertoires de ce dernier).

Table des matières Haut

Remarques

La restriction d'accès s'applique à l'ensemble du répertoire dans lequel est le .htaccess, nous ne pouvons pas agir sur fichier particulier (à moins d'utiliser <Files>). Nous devrons donc constituer notre arborescence en fonction des sécurités à appliquer. Nous placerons donc dans le même répertoire les documents pour lesquels le type de protection est identique.

Les restrictions d'accès définies par un fichier .htaccess s'étendent à tous les sous-dossiers.

Le fichier .htaccess ne peut porter sur un autre répertoire que celui dans lequel nous l'avons placé ou les sous répertoires de ce dernier.

Nous ne pouvons placer qu'un seul fichier .htaccess par répertoire (mais nous pouvons avoir un fichier .htaccess différent dans chaque répertoire).

Si la protection ne fonctionne pas, nous devons consulter la configuration d'Apache, et plus particulièrement la valeur de AllowOverride à laquelle nous pouvons affecter All.

La protection par htaccess est fiable, mais n'est pas totale, car elle ne concerne que les requêtes des protocoles comme par exemple HTTP, mais pas lorsque nous accédons aux fichiers à l'aide d'un autre protocole tel que FTP. Mais dans ce cas, d'autres mécanismes d'authentification sont à l'œuvre.

Table des matières Haut

Le fichier .htaccess

Nous pouvons créer notre premier fichier .htaccess :

AuthUserFile /home/login/.htpasswd
AuthGroupFile /dev/null
AuthName "Acces Restreint"
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>

Analysons de plus près ces quelques lignes :

AuthUserFile /home/login/.htpasswd

Nous déterminons ici le chemin du le fichier contenant les paires login/mot de passe des visiteurs autorisés.

Attention : nous devons mentionner le chemin d’accès depuis la racine du serveur (le plus souvent le répertoire www). Si vous ne parvenez plus à accéder aux pages protégées malgré de nombreuses tentatives, vérifiez ce dernier. ;-)

Le fichier contenant les paires login/mot de passe est souvent nommé .htpasswd, mais il est conseillé d’utiliser un autre nom, le fichier devenant alors plus difficile à trouver.

AuthGroupFile /dev/null

Cette ligne nous permet de donner un droit d’accès à un ensemble d’utilisateurs faisant partie d’un même groupe.

Le fichier /dev/null est l’équivalent Unix de néant, c'est ce type qui est le plus utilisé pour AuthGroupFile.

Dans ce cas, cela signifie que la protection ne s'applique à aucun groupe particulier.

AuthName "Acces Restreint"

Nous définissons avec AuthName la chaîne de caractère qui apparaîtra dans la boîte de dialogue au moment de la saisie du nom et du mot de passe.

AuthType Basic

AuthType détermine le type d’authentification utilisé. Basic correspond à l’authentification HTTP standard.

<limit GET POST> ... </limit>

Cette partie détermine le type d’opérations permises.

Rappel :

  • GET s’applique à la majorité des pages Web, c'est la commande que nous pouvons remarquer dans la partie adresse de notre explorateur.
  • POST est souvent employé pour transmettre des quantités de données plus importantes, ou pour éviter de passer les paramètres dans l'URL.
  • PUT est utilisé par certains scripts ou éditeurs pour faire de l’upload sous protocole http.

Nous devons écrire GET et POST en majuscule sur les dernières versions d’Apache.

Au lieu de Limit, nous pouvons utiliser Files :

<Files *.htm>

Avec *.htm nous limitons la protection à ce type de fichiers. nous pouvons aussi mentionner le nom d'un seul fichier, suivi de son extension.

require valid-user

Nous spécifions qu’un utilisateur valide est requis (un utilisateur pour le nom duquel une ligne existe dans le fichier .htpasswd).

require user steph fred

Dans ce cas, nous n'utilisons pas de fichier comportant les paires login/mot de passe, mais nous spécifions directement les utilisateurs accrédités.

Nous pouvons utiliser le mot-clé user ou bien group selon que nous désirions spécifier des utilisateurs distincts ou des groupes d'utilisateurs. Nous pouvons aussi utiliser une combinaison des deux.

Table des matières Haut

Les mots-clés de la sécurité htaccess

AuthConfig
En relation avec Limit, nous pouvons définir une structure d'accréditation(définition de noms, de fichiers d'utilisateurs et de mots de passe ainsi que des conditions d'authentification).
FileInfo
  • Définition personnelle de types MIME (ensemble de types de fichiers standard, permettant d'associer une extension de fichier donnée à une application) et de leurs représentations par des extensions de fichier. Ceci permet de spécifier quelle application doit être utilisée pour ouvrir ce type de fichier.
    Nous pouvons aussi l'utiliser pour annuler tout élément prédéfini. Par exemple, si votre responsable sécurité DMZ (zone démilitarisée entre les pare-feu qui séparent votre intranet et Internet) décide de bloquer toutes les pages qui contiennent des MP3, vous pouvez les renommer en .jpg et forcer votre navigateur à utiliser les fichiers .txt de ce répertoire comme des fichiers .mp3 8-|
  • Nous pouvons définir les variantes linguistiques de documents HTML.
Indexes
  • Nous pouvons gérer la navigation dans l'arborescence (directory browsing), si nous autorisons les visiteur à y accéder :
    • nous pouvons définir les icônes qui seront affichées en fonction des fichiers du répertoire.
    • nous pouvons définir des textes de description personnels pour les types MIME
    • nous pouvons spécifier le nom du fichier index (index.html etc.)
    • nous pouvons déterminer un fichier à inclure automatiquement pour les lignes de tête et de pied lors de la navigation dans l'arborescence
    • nous pouvons spécifier une liste de fichiers à ne pas afficher, en utilisant les expressions rationnelles (regexp).
    Nous pouvons donc simuler un ensemble de pages Web qui proposent un contenu, en définissant simplement ces quelques lignes.
Limit
Bloc contenant des sous directives permettant de définir les droits d'accès associés à une ou plusieurs méthodes d'accès (activation des commandes allow, deny et order).
Options
  • XBitHack nous permet de créer une espèce de variante de SSI à programmer nous-même
  • Options (options pour le comportement du répertoire)
    • Indexes : permet de déterminer ou de refuser la navigation dans l'arborescence.
    • ExecCGI : permet la définition de nos propres répertoires CGI.
      +ExecCGI permet l'exécution de scripts CGI dans le répertoire.
      -ExecCGI interdit l'exécution de scripts CGI dans le répertoire.
    • Includes : permet l'emploi ou la désactivation de SSI (Server Side Includes) au sens large (y compris ExecCGI).
      +Includes permet l'exécution de SSI dans le répertoire.
      -Includes l'interdit.
      +IncludesNOEXEC permet l'exécution de Server Side Includes, qui n'exécutent aucun script CGI
      -IncludesNOEXEC interdit ces SSI.
    • IncludesNoCGI : permet l'emploi ou la désactivation de SSI au sens strict (sans ExecCGI).
    • MultiViews : permet l'emploi ou la désactivation de documents dynamiques liés à la langue.
    • SymLinks  : permet l'emploi de liens symboliques comme liens à des documents d'autres répertoires.
    • SymLinksIfOwnerMatch : version limitée de SymLinks, qui ne permet les liens que sur des objets de la même identification utilisateur.
Order, Deny et Allow
  • Order nous permet de spécifier un ordre d'évaluation des critères de test.
  • Allow autorise les entités satisfaisant le test correspondant.
  • Deny refuse les entités satisfaisant également le test correspondant.

Nous pouvons utiliser une combinaison des 2, l'ordre déterminant la politique de sécurité :

  • Pour l'ordre Deny,Allow, les directives Deny sont évaluées avant celles de la clause Allow. L'accès est autorisé par défaut. Dans ce cas, tout visiteur qui ne correspond pas à la directive de Deny ou qui satisfait au test d'authentification Allow se verra autorisé l'accès au serveur web.
  • Pour l'ordre Allow,Deny, les directives Allow sont évaluées avant celles de la clause Deny. L'accès est refusé par défaut.

Table des matières Haut

Le fichier .htpasswd

Pour chaque utilisateur autorisé ce fichier contient une ligne sous la forme nom:mot de passe crypté.

Exemple :

steph:$apr1$oQzAulxb$48HgAhixTtQGV1yVXDaC7.

Si vous avez accès a un shell Unix/Linux, la commande est la suivante :

htpasswd -c passwdfile username

Dans cette commande, passwdfile représente le chemin complet du fichier mot de passe souhaité, username est le nom de l’utilisateur.

Pour tous ceux qui n’ont pas d’accès au shell unix, vous pouvez utiliser ce petit utilitaire pour crypter les mots de passe en ligne :

Générateur/crypteur de mots de passe

Si vous désirez un mot de passe aléatoire, le script peut vous en générer un :
de caractères






Vous pouvez tester les possibilités de personnalisation et de sécurité par mot de passe à cette adresse : /htaccess/info.html

Table des matières Haut

Le fichier .htgroups

Le fichier de groupes définit pour chaque nom de groupe les utilisateurs appartenant à ce groupe. Ces utilisateurs doivent bien entendu exister dans le fichier d'utilisateurs.

Le fichier de groupe n'est nécessaire que dans le cas où nous avons mentionné dans le fichier .htaccess un groupe d'utilisateurs. Alors que vous avez besoin dans tous les cas du fichier utilisateurs, le fichier de groupe n'est indispensable que si vous utilisez des noms de groupe.

Tous les visiteurs du projet Web qui essaient maintenant d'accéder au répertoire avec le fichier .htaccess, reçoivent de leur navigateur une fenêtre de dialogue dans laquelle ils doivent entrer le nom d'utilisateur et le mot de passe. Seuls les visiteurs qui s'identifient avec une combinaison valide de nom d'utilisateur et de mot de passe ont accès au répertoire

Table des matières Haut

Les noms .htaccess, .htpasswd et .htgroups

Dans le système d’exploitation Unix/Linux, tous les fichiers dont le nom commence par un point décimal sont des fichiers cachés. Attention : caché ne signifie pas invisible, mais signifie plutôt qu’ils n’apparaissent pas dans les commandes les plus fréquentes si leur affichage n’est pas spécifiquement demandé.

Vous pouvez modifier le nom du fichier .htpasswd(ou .htgroups) pour autant qu'il soit correctement renseigné par AuthUserFile dans le fichier .htaccess. Utilisez de préférence un nom de fichier qui commence par .ht, car ces fichiers sont par défaut cachés aux visiteurs dans le cas d'un serveur Apache.

Par contre, .htaccess est la valeur par défaut prédéfinie dans la configuration Apache. Pour modifier ce nom, il faut avoir accès à la commande AccessFileName.

Table des matières Haut

.htaccess sous Windows

Sous Windows, vous pouvez avoir des difficultés pour créer votre fichier .htaccess. Dans ce cas, vous pouvez consulter la méthode proposée dans les astuces : Créer un fichier .htaccess sous Windows

Langue du document

Il est possible d'afficher un même contenu dans plusieurs langues, selon la langue par défaut du navigateur. Il suffit de créer plusieurs fichiers, et de placer avant l'extension la langue souhaitée. Cela dépend de la configuration du serveur apache, il faut notamment veiller à ce que l'option "MultiViews" soit activée.

Vous pouvez tester ce fichier test, pour autant que les paramètres de langue de votre navigateur soient autre que "français".

Document créé le 29/07/2004, dernière modification le 07/04/2023
Source du document imprimé : https://www.gaudry.be/htaccess.php

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.