Serveur Apache HTTP Version 2.4
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 |
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
.
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 :
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
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 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
.
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 On SessionDBDPerUser On
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.
L'administrateur devra mettre en oeuvre un traitement externe via cron pour nettoyer les sessions expir�es.
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.
Session On SessionDBDCookieName session path=/private;domain=example.com;httponly;secure;version=1;
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.
Session On SessionDBDCookieName2 session path=/private;domain=example.com;httponly;secure;version=1;
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.
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
.
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.
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.
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
.
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.