<-
Apache > Serveur HTTP > Documentation > Version 2.4 > Modules

Module Apache mod_session_dbd

Langues Disponibles:  en  |  fr 

Description:Support des session bas� sur DBD/SQL
Statut:Extension
Identificateur�de�Module:session_dbd_module
Fichier�Source:mod_session_dbd.c
Compatibilit�:Disponible depuis la version 2.3 d'Apache

Sommaire

Avertissement

Les modules de session font usage des cookies HTTP, et peuvent � ce titre �tre victimes d'attaques de type Cross Site Scripting, ou divulguer des informations � caract�re priv� aux clients. Veuillez vous assurer que les risques ainsi encourus ont �t� pris en compte avant d'activer le support des sessions sur votre serveur.

Ce sous-module du module mod_session fournit le support du stockage des sessions utilisateur dans une base de donn�es SQL en utilisant le module mod_dbd.

Les sessions sont soit anonymes, et la session est alors identifi�e par un UUID unique stock� dans un cookie au niveau du navigateur, soit propres � l'utilisateur, et la session est alors identifi�e par l'identifiant de l'utilisateur connect�.

Les sessions bas�es sur SQL sont dissimul�es au navigateur, et permettent ainsi de pr�server la confidentialit� sans avoir recours au chiffrement.

Plusieurs serveurs web d'une for�t de serveurs peuvent choisir de partager une base de donn�es, et ainsi partager les sessions entre eux.

Pour plus de d�tails � propos de l'interface des sessions, voir la documentation du module mod_session.

Directives

Sujets

Voir aussi

top

Configuration de DBD

Pour que le module mod_session_dbd puisse �tre configur� et maintenir une session, il faut tout d'abord configurer le module mod_dbd pour que le serveur puisse ex�cuter des requ�tes vers la base de donn�es.

Quatre types de requ�tes sont n�cessaires pour maintenir une session, s�lectionner ou mettre � jour une session existante, ins�rer une nouvelle session et supprimer une session vide ou arriv�e � expiration. Ces requ�tes sont configur�es comme dans l'exemple suivant :

Exemple de configuration de DBD

DBDriver pgsql
DBDParams "dbname=apachesession user=apache password=xxxxx host=localhost"
DBDPrepareSQL "delete from session where key = %s" deletesession
DBDPrepareSQL "update session set value = %s, expiry = %lld, key = %s where key = %s" updatesession
DBDPrepareSQL "insert into session (value, expiry, key) values (%s, %lld, %s)" insertsession
DBDPrepareSQL "select value from session where key = %s and (expiry = 0 or expiry > %lld)" selectsession
DBDPrepareSQL "delete from session where expiry != 0 and expiry < %lld" cleansession
top

Sessions anonymes

Les sessions anonymes sont identifi�es par un UUID unique, et stock�es dans un cookie au niveau du navigateur. Cette m�thode est similaire � celle utilis�e par la plupart des serveurs d'applications pour stocker les informations de session.

Pour cr�er une session anonyme, la stocker dans une table de base de donn�e postgres nomm�e apachesession, et sauvegarder l'identifiant de session dans un cookie nomm� session, configurez la session comme suit :

Session anonyme bas�e sur SQL

Session On
SessionDBDCookieName session path=/

Pour plus d'exemples sur la mani�re dont une application CGI peut acc�der aux informations de session, voir la section exemples de la documentation du module mod_session.

Pour des d�tails sur la mani�re dont une session peut �tre utilis�e pour stocker des informations de type nom d'utilisateur/mot de passe, voir la documentation du module mod_auth_form.

top

Sessions propres � un utilisateur

Les sessions propres � un utilisateur sont identifi�es par le nom de l'utilisateur authentifi� avec succ�s. Ceci permet d'assurer une confidentialit� optimale, car aucun traitement externe � la session n'existe en dehors du contexte authentifi�.

Les sessions propres � un utilisateur ne fonctionnent que dans un environnement d'authentification correctement configur�, qu'il s'agisse d'une authentification de base, � base de condens�s (digest) ou de certificats client SSL. Suite � des limitations dues � des d�pendances mutuelles, les sessions propres � un utilisateur ne peuvent pas �tre utilis�es pour stocker les donn�es d'authentification en provenance d'un module comme mod_auth_form.

Pour cr�er une session propre � un utilisateur, la stocker dans une table de base de donn�es postgres nomm�e apachesession, avec comme cl� de session l'identifiant utilisateur, ajoutez les lignes suivantes :

Session propre � un utilisateur bas�e sur SQL

Session On
SessionDBDPerUser On
top

Nettoyage de la base de donn�es

Avec le temps, la base de donn�es va commencer � accumuler des sessions expir�es. Pour le moment, le module mod_session_dbd n'est pas en mesure de g�rer automatiquement l'expiration des sessions.

Avertissement

L'administrateur devra mettre en oeuvre un traitement externe via cron pour nettoyer les sessions expir�es.

top

SessionDBDCookieName Directive

Description:Nom et attributs du cookie RFC2109 qui contient l'identifiant de session
Syntaxe:SessionDBDCookieName nom attributs
D�faut:none
Contexte:configuration du serveur, serveur virtuel, r�pertoire, .htaccess
Statut:Extension
Module:mod_session_dbd

La directive SessionDBDCookieName permet de sp�cifier le nom et les attributs optionnels d'un cookie compatible RFC2109 qui contiendra l'identifiant de session. Les cookies RFC2109 sont d�finis � l'aide de l'en-t�te HTTP Set-Cookie.

Une liste optionnelle d'attributs peut �tre sp�cifi�e pour ce cookie, comme dans l'exemple ci-dessous. Ces attributs sont ins�r�s dans le cookie tels quels, et ne sont pas interpr�t�s par Apache. Assurez-vous que vos attributs sont d�finis correctement selon la sp�cification des cookies.

Cookie avec attributs

Session On
SessionDBDCookieName session path=/private;domain=example.com;httponly;secure;version=1;
top

SessionDBDCookieName2 Directive

Description:Nom et attributs du cookie RFC2965 qui contient l'identifiant de session
Syntaxe:SessionDBDCookieName2 nom attributs
D�faut:none
Contexte:configuration du serveur, serveur virtuel, r�pertoire, .htaccess
Statut:Extension
Module:mod_session_dbd

La directive SessionDBDCookieName2 permet de sp�cifier le nom et les attributs optionnels d'un cookie compatible RFC2965 qui contiendra l'identifiant de session. Les cookies RFC2965 sont d�finis � l'aide de l'en-t�te HTTP Set-Cookie2.

Une liste optionnelle d'attributs peut �tre sp�cifi�e pour ce cookie, comme dans l'exemple ci-dessous. Ces attributs sont ins�r�s dans le cookie tel quel, et ne sont pas interpr�t�s par Apache. Assurez-vous que vos attributs sont d�finis correctement selon la sp�cification des cookies.

Cookie2 avec attributs

Session On
SessionDBDCookieName2 session path=/private;domain=example.com;httponly;secure;version=1;
top

SessionDBDCookieRemove Directive

Description:D�termine si les cookies de session doivent �tre supprim�s des en-t�tes HTTP entrants
Syntaxe:SessionDBDCookieRemove On|Off
D�faut:SessionDBDCookieRemove On
Contexte:configuration du serveur, serveur virtuel, r�pertoire, .htaccess
Statut:Extension
Module:mod_session_dbd

La directive SessionDBDCookieRemove permet de d�terminer si les cookies contenant l'identifiant de session doivent �tre supprim�s des en-t�tes pendant le traitement de la requ�te.

Dans le cas d'un mandataire inverse o� le serveur Apache sert de frontal � un serveur d'arri�re-plan, r�v�ler le contenu du cookie de session � ce dernier peut conduire � une violation de la confidentialit�. � ce titre, si cette directive est d�finie � "on", le cookie de session sera supprim� des en-t�tes HTTP entrants.

top

SessionDBDDeleteLabel Directive

Description:La requ�te SQL � utiliser pour supprimer des sessions de la base de donn�es
Syntaxe:SessionDBDDeleteLabel �tiquette
D�faut:SessionDBDDeleteLabel deletesession
Contexte:configuration du serveur, serveur virtuel, r�pertoire, .htaccess
Statut:Extension
Module:mod_session_dbd

La directive SessionDBDDeleteLabel permet de d�finir l'�tiquette de la requ�te de suppression � utiliser par d�faut pour supprimer une session vide ou expir�e. Cette �tiquette doit avoir �t� d�finie au pr�alable via une directive DBDPrepareSQL.

top

SessionDBDInsertLabel Directive

Description:La requ�te SQL � utiliser pour ins�rer des sessions dans la base de donn�es
Syntaxe:SessionDBDInsertLabel �tiquette
D�faut:SessionDBDInsertLabel insertsession
Contexte:configuration du serveur, serveur virtuel, r�pertoire, .htaccess
Statut:Extension
Module:mod_session_dbd

La directive SessionDBDInsertLabel permet de d�finir l'�tiquette de la requ�te d'insertion par d�faut � charger dans une session. Cette �tiquette doit avoir �t� d�finie au pr�alable via une directive DBDPrepareSQL.

Si une tentative de mise � jour d'une session ne concerne aucun enregistrement, c'est cette requ�te qui sera utilis�e pour ins�rer la session dans la base de donn�es.

top

SessionDBDPerUser Directive

Description:Active une session propre � un utilisateur
Syntaxe:SessionDBDPerUser On|Off
D�faut:SessionDBDPerUser Off
Contexte:configuration du serveur, serveur virtuel, r�pertoire, .htaccess
Statut:Extension
Module:mod_session_dbd

La directive SessionDBDPerUser permet d'activer une session propre � un utilisateur, dont la cl� sera le nom de l'utilisateur connect�. Si l'utilisateur n'est pas connect�, la directive sera ignor�e.

top

SessionDBDSelectLabel Directive

Description:La requ�te SQL � utiliser pour s�lectionner des sessions dans la base de donn�es
Syntaxe:SessionDBDSelectLabel �tiquette
D�faut:SessionDBDSelectLabel selectsession
Contexte:configuration du serveur, serveur virtuel, r�pertoire, .htaccess
Statut:Extension
Module:mod_session_dbd

La directive SessionDBDSelectLabel permet de d�finir l'�tiquette de la requ�te de s�lection par d�faut � utiliser pour charger une session. Cette �tiquette doit avoir �t� d�finie au pr�alable via une directive DBDPrepareSQL.

top

SessionDBDUpdateLabel Directive

Description:La requ�te SQL � utiliser pour mettre � jour des sessions pr�existantes dans la base de donn�es
Syntaxe:SessionDBDUpdateLabel �tiquette
D�faut:SessionDBDUpdateLabel updatesession
Contexte:configuration du serveur, serveur virtuel, r�pertoire, .htaccess
Statut:Extension
Module:mod_session_dbd

La directive SessionDBDUpdateLabel permet de d�finir l'�tiquette de la requ�te de mise � jour par d�faut � charger dans une session. Cette �tiquette doit avoir �t� d�finie au pr�alable via une directive DBDPrepareSQL.

Si une tentative de mise � jour d'une session ne concerne aucun enregistrement, c'est la requ�te d'insertion qui sera appel�e pour ins�rer la session dans la base de donn�es. Si la base de donn�es supporte InsertOrUpdate, modifiez cette requ�te pour effectuer la mise � jour en une seule requ�te au lieu de deux.

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.