<-
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.