0% ont trouvé ce document utile (0 vote)
41 vues7 pages

Protéger un serveur Apache avec .htaccess

Le document explique comment protéger un répertoire sur un serveur Apache à l'aide de fichiers .htaccess et de la configuration httpd.conf. Il aborde la création d'utilisateurs et de mots de passe, la gestion des groupes d'utilisateurs, ainsi que les restrictions d'accès basées sur des adresses IP. Enfin, il présente des méthodes combinées d'authentification et de restrictions d'accès pour renforcer la sécurité du serveur.

Transféré par

brayjuanico
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
41 vues7 pages

Protéger un serveur Apache avec .htaccess

Le document explique comment protéger un répertoire sur un serveur Apache à l'aide de fichiers .htaccess et de la configuration httpd.conf. Il aborde la création d'utilisateurs et de mots de passe, la gestion des groupes d'utilisateurs, ainsi que les restrictions d'accès basées sur des adresses IP. Enfin, il présente des méthodes combinées d'authentification et de restrictions d'accès pour renforcer la sécurité du serveur.

Transféré par

brayjuanico
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ENI

<Directory "c:/www/monsite/AccesProtege">
Protection d'un serveur Apache PHP MySQL AllowOverride AuthConfig
Options Indexes
.htaccess est un simple fichier texte qui vous permet de </Directory>
gérer de manière décentralisée un serveur Apache (le
serveur des élèves, par exemple). Par exemple, La directive AllowOverride permet de dire au serveur
.htaccess vous permet de protéger certains répertoires quelles sont les options de configuration que vous
avec des mots de passe, de restreindre l'accès à votre pouvez spécifier dans le fichier .htaccess. Ici, on lui dit
page Web, d'empêcher le listage de vos répertoires de ne s'occuper que des Authentifications par mot de
(quand ils ne contiennent pas de fichier index.html), ou passe et on permet l'affichage du contenu du dossier.
encore d'utiliser vos propres pages d'erreur (404, 403)...
Créons maintenant un fichier contenant les informations
1. Protection d'un répertoire par .htaccess de groupes. Les groupes correspondent à un grade, un
(authentification par mot de passe) rang de personnes ayant les mêmes pouvoirs. Ici BOB
et TOTO sont des administrateurs du site et JACKY est
un simple membre. Nous allons stocker ces informations
Nous allons voir ensemble comment protéger un
de groupe dans le fichier groups dans c:\www\apache-
répertoire. D'abord, créons un répertoire à protéger
2.2\users. Vous pouvez lui donner le nom que vous
c:\www\monsite\AccesProtege. Il pourra contenir toutes
voulez. Voici son contenu :
sortes d'informations à protéger, afin de voir s'il est
efficace, mettez y des fichiers html, ou des images...
Ensuite, il va falloir créer un répertoire servant à stocker admins: BOB TOTO
les fichiers de mot de passe et de groupes d'utilisateurs. membres: JACKY
Ce répertoire doit lui même être protégé, il ne doit donc
pas se situer dans un répertoire racine du site ou de ses Attention : ne mettez surtout pas d'espace entre le nom
enfants. Créons le dossier c:\www\apache-2.2\users. du groupe et les deux points (:) sinon cela ne marchera
pas.
Création des utilisateurs et mots de passe avec la
commande htpasswd. Maintenant, créons un utilisateur Ensuite, plaçons nous dans le dossier
BOB ayant marley pour mot de passe (crypté en MD5 c:\www\monsite\AccesProtege et créons le fichier
par défaut) et le fichier de mots de passe (vous pouvez .htaccess. Petite astuce : comme vous ne pouvez pas
le nommer autrement). À la première insertion d'un directement créer un fichier ayant un nom commençant
utilisateur, il faut créer le fichier à l'aide du paramètre -c par un point (.) nommez le comme vous voulez puis
À la création des utilisateurs suivants JACKY et TOTO, il renommez le sous l'invite MS-DOS à l'aide de la
ne faut pas donner en argument le paramètre -c car le commande ren AncienNom .htaccess vous devez bien
fichier est déjà existant. Vous pouvez voir la liste des entendu vous trouver dans le répertoire contenant ces
paramètres possibles en tapant htpasswd /?. fichiers. Ensuite éditez .htaccess et insérez y ces
quelques lignes :
C:\>htpasswd -c c:\www\apache-2.2\users\passwords
BOB AuthType Basic
Automatically using MD5 format. AuthName "zone protégée"
New password: ****** AuthUserFile c:/www/apache-2.2/users/passwords
Re-type new password: ****** AuthGroupFile c:/www/apache-2.2/users/groups
Adding password for user BOB Require group admins

C:\>htpasswd c:\www\apache-2.2\users\passwords Quelques explications.


JACKY
Automatically using MD5 format. • AuthType détermine le type d'authentification.
New password: **** • AuthName détermine le texte s'affichant sur la
Re-type new password: ****
fenêtre d'authentification.
Adding password for user JACKY
• AuthUserFile spécifie le chemin absolu (avec
des slashs /) du fichier de mots de passe.
C:\>htpasswd c:\www\apache-2.2\users\passwords
• AuthGroupFile spécifie le chemin absolu (avec
TOTO
Automatically using MD5 format. des slashs /) du fichier de groupes. Cette ligne
New password: ***** est inutile si vous n'indiquez pas de groupes
Re-type new password: ***** après Require
Adding password for user TOTO • Require indique quels sont les utilisateurs
autorisés à accéder au répertoire. Il peut être
suivi de group, user ou valid-user (tout en
Éditez c:\www\apache-2.2\conf\httpd.conf et ajoutez y minuscules).
cette directive :
• user user user1 user2 user3 …indique le ou
les utilisateurs autorisés (séparés par des
1
ENI

espaces) présents dans le fichier de mots de Directory


passe.
• group groupe1 group2 ….indique le ou les Regroupe les paramètres qui s'appliquent au répertoire
groupes autorisés aussi séparés d'espaces. (et à ses sous répertoires) inclus dans cette directive.
• valid-user indique que tout utilisateur présent Admettons que nous possédions un dossier nommé
dans le fichier de mots de passe est autorisé à images à la racine du site, ce dossier a donc pour
lire les fichiers du répertoire adresse c:\www\monsite\images et que nous ne voulons
pas que son contenu soit visible. Il est possible de faire
Maintenant, si vous tapez l'adresse beaucoup de choses avec cette directive, mais nous ne
http://127.0.0.1/AccesProtege une fenêtre d'identification nous intéresserons qu'à la sous directive Options. Nous
doit apparaître vous laissant 3 essais pour vous allons donc ajouter, n'importe où dans le fichier
identifier. Vous devez donc entrer un nom et mot de httpd.conf les lignes suivantes :
passe appartenant au groupe admins : BOB ou TOTO.
Si les informations demandées ne sont pas valides, <Directory "c:/www/monsite/images">
vous arriverez sur une page d'erreur. Options -Indexes
</Directory>
Information : Par défaut, le fichier auquel se réfère le
serveur Apache pour voir s'il y a des informations Si vous souhaitez afficher le contenu du dossier, il suffit
supplémentaires de configuration de répertoire se juste de supprimer le - qui précède Indexes. Relancez
nomme .htaccess Vous pouvez changer ce nom grâce à Apache. Tapez http://127.0.0.1/images. Son contenu
la directive AccessFileName du fichier httpd.conf. Vous doit normalement ne plus être visible.
pouvez mettre plusieurs noms, ceux-ci ayant une priorité
allant de gauche à droite comme avec DirectoryIndex. 2. Protection par modification de httpd.conf
Comme sous les systèmes Unix, on met un point (.) en
début du nom de fichier : sous ces systèmes, ces
fichiers sont cachés. Apache ne les affichera pas même Le principe est assez similaire à ce qui a été exposé ci-
sous windows. dessus si ce n'est que le renvoi vers le fichier des
autorisations est réalisé dans /etc/httpd/conf/httpd.conf.
DirectoryIndex
Pour mettre en place ce renvoi éditez ce fichier et
ajoutez (par exemple tout à la fin) les lignes suivantes :
Indique quels sont les fichiers à envoyer au navigateur
lorsque le visiteur tape une adresse se terminant par le
nom d'un répertoire. Il s'agit en fait de la page par défaut <Directory /var/www/html/test>
du répertoire.
DirectoryIndex index.php index.htm index.html AuthName "Accès limité"
On tape dans la barre d'adresse http://127.0.0.1 ou
http://127.0.0.1/, Apache renverra le premier fichier qu'il AuthUserFile /etc/httpd/auth/test.users
trouvera dans le répertoire avec une priorité allant de
gauche à droite. AuthType Basic

Alias require valid-user

Renvoie à un autre endroit du disque. Cela permet de </Directory>


stocker des documents ailleurs que dans le répertoire
racine. Cela peut servir à héberger plusieurs sites sur un
même serveur. Pour illustrer ceci, changeons le dossier Pour protéger plusieurs répertoires créez plusieurs
c:\www\monsite\phpmyadmin en c:\www\phpmyadmin. paragraphes <Directory> </Directory>.
Ajoutez à la fin du fichier, la ligne
Alias /pma "c:/www/phpmyadmin" Sauvegardez puis relancez le démon Apache (comme
Note : Le fait de taper http://127.0.0.1/pma/ vous root : /etc/rc.d/init.d/httpd restart). En effet dans ce cas
renverra alors au dossier c:\www\phpmyadmin. Il faut vous venez de modifier un des fichiers de configuration
aussi ajouter la directive Directory afin d'autoriser l'accès du serveur, fichier qui est lu au moment du chargement
au répertoire. de Apache. Il convient donc de forcer Apache à relire ce
fichier pour prendre en compte les modifications.
<Directory "c:/www/phpmyadmin">
Order allow,deny 3. Protection de fichiers particuliers dans un
Allow from all sous répertoire
</Directory>
La protection par .htaccess décrite ci-dessus s'applique
à l'ensemble d'un sous-répertoire. En fait vous pouvez
différencier, si vous le souhaitez, les accès aux fichiers.
2
ENI

La syntaxe de .htaccess s'en trouve légèrement points, par exemple l'adresse IP de clipper est
modifiée, par exemple pour protéger un fichier nommé 129.199.121.1.
common.php :
Pour interdire une adresse IP :
<Files common.php>
deny from 123.456.789.10
AuthName "Accès limité au fichier
common.php par .htaccess" Inversement, on peut autoriser une adresse IP :

AuthUserFile /etc/httpd/auth/common.users allow from123.456.789.10

AuthType Basic Si on indique un ou deux nombres seulement, ils sont


interprétés comme des plages d'adresses IP. Par
require valid-user exemple, allow from 129.199 autorise tous les accès
venant de l'École. deny from all interdit à tout le monde
</Files> l'accès à vos fichiers, mais des scripts peuvent continuer
à les utiliser.
L'intérêt de libeller AuthName de façon explicite apparaît
ici de façon nette. Lors des essais vous pourrez en effet En pratique, une interdiction de certaines IP prend la
savoir immédiatement quels sont les contrôles d'accès forme suivante :
qui sont en place.
order allow,deny
Vous pouvez souhaiter protéger plus spécifiquement deny from 123.45.6.7 # on interdit l'adresse précise
l'accès à un fichier particulier. La solution consiste à 123.45.6.7
créer un fichier .htaccess libellé comme suit : deny from 12.34.5 # on interdit toutes les adresses IP
commençant par 12.34.5
allow from all # on autorise tous les autres
Exemple pour protéger un fichier common.php :
Exemple : vous souhaitez réserver une partie de votre
<Files common.php> site aux connexions venant de l'École. Admettons qu'il
s'agisse de votre répertoire ~/www/normalos/. Créez
Order Deny,Allow dans ce répertoire une fichier .htaccess dans lequel
vous écrirez :
Deny from All
order deny,allow
</Files> deny from all
allow from 129.199
Pour protéger plusieurs fichiers il suffit de créer
plusieurs rubriques <Files> </Files>. On peut aussi utiliser des noms de domaine. Admettons
que vous n'aimiez ni le gouvernenent américain ni
Attention: cette méthode interdit l'accès via le serveur l'entreprise de M. Gates. Vous pouvez écrire :
Web pour tout le monde, y compris le propriétaire du
fichier, l'administrateur, etc. Deny from .gov microsoft.com

Vous ne voulez peut-être pas que l'on sache où vous


rangez vos mots de passe. Il faut dans ce cas empêcher 5. Combinaison des deux méthodes de
l'accès au fichier .htaccess lui-même. Pour protéger le protection
fichier, taper :
Il est possible de combiner accès par mot de passe et
<Files .htaccess> accès par sous-domaine.
order allow,deny
deny from all Dans ce cas, la présence des deux fichiers mot de
</Files> passe et .htaccess est nécessaire. Deux possibilités
sont offertes :
4. Restrictions d'accès
* On autorise les accès depuis un certain sous-domaine
Vous pouvez interdire l'accès à votre site à partir de plus des mots de passe ailleurs
certaines adresses IP. Rappel : une adresse IP est
constitué de quatre nombres de 0 à 255 séparés par des

3
ENI

seule protection évoquée par le fichier .htaccess, on


AuthUserFile peut encadrer l'ensemble du fichier, comme dans
/usr/local/bin/www/httpd_1.3/basedenoms/.htpasswd l'exemple suivant :
AuthGroupFile /dev/null
AuthName AccesRestreint <Files fichier.html fichier2.html>
AuthType Basic
AuthUserFile
/usr/local/bin/www/httpd_1.3/basedenoms/.htpasswd
order deny,allow AuthGroupFile
deny from all /usr/local/bin/www/httpd_1.3/basedenoms/.htgroup
allow from .telecom-paristech.fr AuthName AccesRestreint
require user martin AuthType Basic
satisfy any
order deny,allow
Dans cet exemple, sont autorisées les personnes deny from all
connectées depuis le sous-domaine .telecom- allow from .telecom-paristech.fr
paristech.fr ainsi que la personne de nom martin (citée require group intranet
dans le fichier .htpasswd) qui peut se connecter d'un satisfy all
tout autre endroit. C'est la clause satisfy any qui permet
l'une ou l'autre des deux autorisations. </Files>

* On autorise les accès depuis un certain sous-domaine


en faisant de plus intervenir des mots de passe Dans cet exemple, seuls les fichiers de noms fichier.html
et fichier2.html bénéficieront de la restriction d'accès
spécifiée.
AuthUserFile
/usr/local/bin/www/httpd_1.3/basedenoms/.htpasswd
AuthGroupFile 7. Authentification par le réseau par .htaccess
/usr/local/bin/www/httpd_1.3/basedenoms/.htgroup
AuthName AccesRestreint Dans cette méthode on va autoriser ou interdire l'accès
AuthType Basic à un groupe d'utilisateurs appartenant à un même
domaine. Dans les exemples suivants on offrira d'abord
order deny,allow l'accès aux pages HTML exclusivement aux utilisateurs
deny from all venant du domaine .ch et du domaine .telecom-
allow from .telecom-paristech.fr paristech.fr puis on interdira l'accès uniquement aux
require group intranet utilisateurs de la machine ulysse.telecom-paristech.fr.
satisfy all
Ici, seule la présence d'un fichier .htaccess est
nécessaire. Son contenu sera bien sûr différent du cas
de l'authentification par nom et mot de passe.
Dans cet exemple, sont autorisés les personnes
connectées depuis le sous-domaine .telecom- Deux possibilités sont offertes :
paristech.fr à condition de faire partie du groupe intranet
(défini dans .htgroup). C'est la clause satisfy all qui
permet la combinaison des deux conditions. * On refuse tous les accès sauf ceux qui sont précisés
Cette possibilité est particulièrement utile dans le cas où
on a défini deux groupes non forcément disjoints et
qu'on souhaite ne donner l'accès qu'à l'intersection des # AuthUserFile /dev/null
deux groupes, sans remettre en cause la constitution # AuthGroupFile /dev/null
propre de chaque groupe. AuthName AccesRestreint
AuthType Basic
6. Restreindre un répertoire ou des fichiers order deny,allow
spécifiques ? deny from all
allow from .ch
En dehors de toute spécification particulière, la allow from .telecom-paristech.fr
protection d'accès s'applique à tous les fichiers se
trouvant dans le répertoire où il se trouve.
* On accepte tous les accès sauf ceux qui sont précisés
Pour restreindre cette protection à un ou quelques
fichiers figurant dans ce répertoire, il est possible de le
préciser en encadrant, dans le fichier .htaccess, la AuthUserFile /dev/null
protection concernée avec la directive <Files>. Si c'est la
4
ENI

AuthGroupFile /dev/null
AuthName InterditPartiel ErrorDocument 400 "Erreur de requete"
AuthType Basic
order deny,allow
deny from all
order allow,deny allow from .telecom-paristech.fr
allow from all
deny from ulysse.telecom-paristech.fr
Exemple 2 :
Après cela, les fichiers qui se trouvent dans le répertoire
protégé ne seront accessibles qu'au domaine de
8. Personnalisation des messages (pages) Telecom-ParisTech.
d'erreur Si une personne non autorisée tente d'y accéder, elle
verra s'afficher la page ErreurAcces.html sur son
navigateur.
Vous pouvez personnaliser le message d'erreur qui
apparaîtra à l'utilisateur non autorisé lors d'une tentative
Htaccess.txt
d'accès à une page protégée en précisant une page
html à afficher dans ce cas. Ceci est également valable
AuthGroupFile /dev/null
pour d'autres messages d'erreur (fichier non trouvé,
AuthName Authorisation
requête annulée).
AuthType Basic
D'abord, créez vos propres pages d'erreur. Ensuite,
dans votre fichier .htaccess, écrivez :
ErrorDocument 403 /~danzart/erreurs/ErreurAcces.html
ErrorDocument 402 /~danzart/erreurs/ErreurAcces.html
ErrorDocument numero_d'_erreur /chemin/fichier.html ErrorDocument 405 /~danzart/erreurs/ErreurAcces.html

Il est plus simple de nommer vos pages 403.html, order deny,allow


404.html, etc., ce qui donne : deny from all
allow from .enst.fr .telecom-paristech.fr
ErrorDocument 404 /home/toto/404.html
ErreurAcess.html
Voici quelques unes des erreurs les plus courantes :
L'erreur suivante est intervenue : Accès interdit
• 401 : Authorization required (erreur no 403)
• 403 : Forbidden
• 404 : Not Found Un peu d'aide:
• 406 : Request Timed Out
• 500 : Internal Server Error • L'accès à ces pages est strictement reservé à
des utilisateurs venant de Telecom-ParisTech
503 : Service Unavailable • Si vous avez tapé cette URL à la main, veuillez
vérifier qu'il n'y a pas d'erreur de frappe
• Vérifiez éventuellement vos signets
Exemple 1 : un exemple illustratif d'un fichier .htaccess
qui restreint l'accès au site de Telecom-ParisTech et qui • Si cette URL a été réferencée depuis ce même
déroute les messages d'erreur vers des pages serveur, ou si vous rencontrez un problème
appropriées: éditorial, merci de prévenir les responsables du
site
• Si vous rencontrez un problème technique,
prévenez plutôt celui-ci
AuthName AccesRestreint

# 401 et 405 : permission refusée 9. Protection de phpMyAdmin.


ErrorDocument 401 /~nomlogin/erreurs/PasDroits.html
ErrorDocument 405 /~nomlogin/erreurs/PasDroits.html PhpMyAdmin est une petite merveille, un ensemble de
# 404 : fichier non trouvé scripts PHP, qui permet d'accéder au serveur MySQL en
ErrorDocument 404 utilisant une interface graphique plus avenante que le
/~nomlogin/erreurs/FichierAbsent.html spartiate client MySQL en mode texte.
# 500 : erreur interne du serveur
ErrorDocument 500 /~nomlogin/erreurs/InternalError.html L'installation par défaut conduit à faire de phpMyAdmin
# 400 : Mauvaise requete un client MySQL avec un login root sans mot de passe
ErrorDocument 400 (d'où l'intérêt de ne pas mettre, dans un premier temps,
/~nomlogin/erreurs/MauvaiseRequete.html de mot de passe au compte root faute de quoi

5
ENI

phpMyAdmin ne serait plus en mesure d'accéder au Avec false l'authentification se fait selon une ancienne
serveur MySQL). méthode qui utilise les valeurs de $cfgServers[1]['user']
et $cfgServers[1]['password'] pour s'identifier auprès de
En fait le fonctionnement de phpMyAdmin est réglé par MySQL. L'installation de base résumée ci-dessus reflète
le fichier /var/www/html/phpMyAdmin/config.inc.php3 cette authentification. En clair phpMyAdmin s'enregistre
sous compte root et sans mot de passe. C'est
précisément la raison pour laquelle il ne faut surtout pas,
Ce fichier, assez court, contient notamment les lignes
en cours d'installation de MySQL, donner suite à la
suivantes :
proposition du script de définir un mot de passe
administrateur. Définir un mot de passe à ce stade de
l'installation bloquerait le fonctionnement ultérieur de
// The $cfgServers array starts with phpMyAdmin. Pour le vérifier faites simplement l'essai
$cfgServers[1]. Do not use $cfgServers[0]. de fixer un mot de passe pour root dans MySQL. La
syntaxe SQL est la suivante (mais vous l'aurez déjà
// You can disable a server config entry by deviné) :
setting host to ''.
mysql> update user set
$cfgServers[1]['host'] = 'localhost'; // MySQL Password=password('mdp_root') where user = 'root';
hostname
Un petit coup de # mysqladmin flush-privileges (y'en a
$cfgServers[1]['port'] = ''; // MySQL port - qui avaient oublié !?) et voilà le mot de passe
leave blank for default port administrateur pris en compte par le serveur MySQL.
Pour la petite histoire c'est la dernière fois que vous
$cfgServers[1]['adv_auth'] = false; // Use tapez cette commande avec cette syntaxe simple.
advanced authentication? Maintenant que root a un mot de passe dans MySQL il
faudra utiliser la syntaxe # mysqladmin -u root -p flush-
$cfgServers[1]['stduser'] = 'root'; // MySQL privileges, ce qui va provoquer la demande du mot de
standard user (only needed with advanced passe par le serveur.
auth)
Et maintenant adieu phpMyAdmin, ça ne marche plus !
$cfgServers[1]['stdpass'] = ''; // MySQL Seulement voilà, arrivé à ce stade de notre étude nous
standard password (only needed with savons comment faire prendre en compte ce mot de
advanced auth) passe par phpMyAdmin. Il suffit de l'incorporer au fichier
de configuration
/var/www/html/phpMyAdmin/config.inc.php3 à la ligne
$cfgServers[1]['user'] = 'root'; // MySQL user $cfgServers[1]['password'] = ' root'.
(only needed with basic auth)
Pour certains PhpMyAdmin (EasyPhp1.8,XAMP,
$cfgServers[1]['password'] = ''; // MySQL WAMP etc) , faire
password (only needed with basic auth) $cfg['Servers'][$i]['auth_type']=
'config'; // Authentication method
$cfgServers[1]['only_db'] = ''; // If set to a db- (config, http or cookie based)?
name, only this db is accessible
$cfg['Servers'][$i]['password'] =
$cfgServers[1]['verbose'] = ''; // Verbose 'root';// MySQL password (only needed
name for this host - leave blank to show the
hostname Au prochain lancement de phpMyAdmin le fichier de
configuration va être pris en compte et tout va rentrer
Le texte de ce fichier semble assez explicite. Il nécessite dans l'ordre, la connexion s'effectuant à nouveau de
toutefois une analyse plus détaillée pour bien en façon directe...
comprendre certaines finesses.
9.2 Configuration avec adv_auth=true
$cfgServers[1] désigne le premier serveur MySQL, le
seul qui nous intéresse ici (il semblerait qu'il y ait des L'authentification avancée diffère légèrement du cas
vicieux qui démarrent plusieurs serveurs.. imaginez un précédent en ce que le login et le mot de passe de
peu ;-)). l'utilisateur qui lance phpMyAdmin sont demandés au
lancement. Il n'y a plus un login de connexion unique,
Le paramètre important est [adv_auth]. Il peut prendre celui-ci peut changer en fonction des informations
deux valeurs, false (défaut à l'installation) et true. données par l'utilisateur qui lance phpMyAdmin. Ces
informations sont ensuite comparées à la base de
9.1 Configuration avec adv_auth = false

6
ENI

données des utilisateurs autorisés par MySQL. La ?>


connexion est établie si les informations sont correctes.
Voici un exemple de script qui force l'identification
Il faut toutefois établir une première connexion de façon du client pour accéder à une page :
à avoir un accès temporaire à la table user. C'est à cette
fin que la configuration prévoit un compte défini par Exemple #1 Exemple d'identification HTTP
$cfgServers[1]['stduser'] et $cfgServers[1]['stdpass'], ces simple
deux variables devant permettre la vérification des droits
d'accès. Il va sans dire que le [stduser] désigné ici devra <?php
avoir des droits suffisants pour lire la table user. if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Re
Pour certains PhpMyAdmin (EasyPhp1.8,XAMP, alm"');
WAMP etc) , faire header('HTTP/1.0 401 Unauthorized');
echo 'Texte utilisé si le visiteur utilise le bouton d\'
$cfg['Servers'][$i]['auth_type']= 'http'; annulation';
// Authentication method (config, http or exit;
cookie based)? } else {
echo "<p>Bonjour, {$_SERVER['PHP_AUTH_US
Cette authentification offre au minimum deux ER']}.</p>";
avantages : echo "<p>Votre mot de passe est {$_SERVER['P
HP_AUTH_PW']}.</p>";
• Les accès à MySQL via phpMyAdmin sont }
différenciés suivant les utilisateurs et suivent ?>
exactement les règles d'autorisation d'accès à
MySQL.
• Le mot de passe administrateur n'a plus à
figurer dans le fichier de configuration de
phpMyAdmin. Il suffit de créer dans la table user
de MySQL un utilisateur, nommé par exemple
phpMyAdmin, dont les droits sont strictement
limités à la consultation des tables (et donc de la
table user). Il suffit de mettre un seul 'Y' et 13 'N'
dans la fameuse requête de création d'un
utilisateur. N'oubliez pas de relancer
mysqladmin -u root -p flush-privileges hein !

10. Identification HTTP avec PHP

Il est possible d'utiliser la fonction header() pour


demander une identification ("Authentication
Required") au client, générant ainsi l'apparition d'une
fenêtre de demande d'utilisateur et de mot de
passe.

Une fois que les champs ont été remplis, l'URL sera
de nouveau appelée, avec les variables prédéfinies
PHP_AUTH_USER, PHP_AUTH_PW et
AUTH_TYPE contenant respectivement le nom
d'utilisateur, le mot de passe et le type
d'identification.

Ces variables prédéfinies sont trouvées dans les


tableaux $_SERVER et $HTTP_SERVER_VARS.
Les méthodes d'identification simple ("Basic") et de
type "Digest" (depuis PHP 5.1.0) sont supportées.

Vous aimerez peut-être aussi