Serveur Apache HTTP Version 2.4

| Description: | Gestion des connexions � une base de donn�es SQL | 
|---|---|
| Statut: | Extension | 
| Identificateur�de�Module: | dbd_module | 
| Fichier�Source: | mod_dbd.c | 
| Compatibilit�: | Versions 2.1 and sup�rieures | 
Le module mod_dbd g�re les connexions
    � une base de donn�es SQL via APR. Il permet
    aux modules qui requi�rent des fonctions li�es aux bases de donn�es
    SQL de se connecter � une base de donn�es � la demande, et s'efforce
    de conf�rer aux bases de donn�es une efficacit� et une
    �volutivit� optimales pour les MPMs thread�s ou non thread�s. Pour
    plus de d�tails, voir le site web APR,
    ainsi que cette vue d'ensemble de l'environnement de
    d�veloppement d'Apache DBD par son d�veloppeur initial.
Ce module g�re de mani�re optimis�e en fonction de la plate-forme
    les connexions aux bases de donn�es. Sur les plates-formes non
    thread�es, il maintient une connexion persistente � la mani�re d'un
    LAMP classique (Linux, Apache, Mysql, Perl/PHP/Python). Sur les
    plates-formes thread�es, il maintient un groupe de
    connexions � la fois plus �volutif et plus efficace, comme
    d�crit dans cet
    article d'ApacheTutor. Notez que mod_dbd
    remplace les modules pr�sent�s dans cet article.
mod_dbd exporte cinq fonctions que d'autres
    modules pourront utiliser. L'API se pr�sente comme suit :
typedef struct {
    apr_dbd_t *handle;
    apr_dbd_driver_t *driver;
    apr_hash_t *prepared;
} ap_dbd_t;
/* Fonctions export�es pour acc�der � la base de donn�es */
/* ouvre une connexion qui DOIT avoir �t� explicitement ferm�e.
 * Renvoie NULL en cas d'erreur
 */
AP_DECLARE(ap_dbd_t*) ap_dbd_open(apr_pool_t*, server_rec*);
/* ferme une connexion ouverte avec ap_dbd_open */
AP_DECLARE(void) ap_dbd_close(server_rec*, ap_dbd_t*);
/* acquiert une connexion qui aura la dur�e de vie de la requ�te et qui
 * NE DOIT PAS avoir �t� explicitement ferm�e. Renvoie NULL en cas
 * d'erreur. C'est la fonction recommand�e pour la plupart des
 * applications.
 */
AP_DECLARE(ap_dbd_t*) ap_dbd_acquire(request_rec*);
/* acquiert une connexion qui aura la dur�e de vie d'une connexion et
 * qui NE DOIT PAS avoir �t� explicitement ferm�e. Renvoie NULL en cas
 * d'erreur.
 */
AP_DECLARE(ap_dbd_t*) ap_dbd_cacquire(conn_rec*);
/* Pr�pare une requ�te qu'un module client pourra utiliser */
AP_DECLARE(void) ap_dbd_prepare(server_rec*, const char*, const char*);
/* Exporte aussi ces fonctions � titre optionnel mour les modules qui
 * p�f�reraient les utiliser */
APR_DECLARE_OPTIONAL_FN(ap_dbd_t*, ap_dbd_open, (apr_pool_t*, server_rec*));
APR_DECLARE_OPTIONAL_FN(void, ap_dbd_close, (server_rec*, ap_dbd_t*));
APR_DECLARE_OPTIONAL_FN(ap_dbd_t*, ap_dbd_acquire, (request_rec*));
APR_DECLARE_OPTIONAL_FN(ap_dbd_t*, ap_dbd_cacquire, (conn_rec*));
APR_DECLARE_OPTIONAL_FN(void, ap_dbd_prepare, (server_rec*, const char*, const char*));
mod_dbd supporte les requ�tes SQL pr�par�es �
    destination des modules qui pourraient les utiliser. Chaque requ�te
    pr�par�e doit poss�der un nom (�tiquette), et est stock�e dans un
    condens� (hash) : les condens�s sont du type
    apr_dbd_prepared_t et s'utilisent dans toute requ�te
    SQL ou commande select pr�par�e par apr_dbd.
Il est du ressort des modules utilisateurs de dbd d'utiliser les
    requ�tes pr�par�es et de pr�ciser quelles requ�tes doivent �tre
    sp�cifi�es dans apache2.conf, ou de fournir leurs propres directives
    et d'utiliser ap_dbd_prepare.
reconnect � 0 dans la cha�ne de connexion, afin
	d'�viter des erreurs provoqu�es par un client MySQL qui se
	reconnecterait sans r�initialiser correctement les requ�tes
	pr�par�es. Si reconnect est d�fini � 1, toute
	connexion d�fectueuse sera sens�e �tre r�par�e, mais comme
	mod_dbd n'en est pas inform�, les requ�tes pr�par�es seront
	invalid�es.
	Toute application web impliquant une base de donn�es doit se prot�ger elle-m�me contre les attaques de type injection SQL. Dans la plupart des cas Apache DBD est s�r, car les applications utilisent des requ�tes pr�par�es, et les entr�es non sures ne seront utilis�es qu'� titre de donn�es. Bien entendu, si vous l'utilisez via un module tiers, vous devez �tre au fait des pr�cautions � prendre.
Cependant, le pilote FreeTDS est non s�r de par sa nature-m�me. Comme la biblioth�que sous-jacente ne supporte pas les requ�tes pr�par�es, le pilote en effectue une �mulation, et les entr�es non s�res sont fusionn�es avec la requ�te SQL.
Il peut �tre s�curis� en d�contaminant toutes les entr�es : un processus inspir� de la recherche de contaminations (taint mode) de Perl. Chaque entr�e est compar�e � une expression rationnelle, et seules les entr�es qui correspondent sont utilis�es, en accord avec le langage Perl :
  $untrusted =~ /([a-z]+)/;
  $trusted = $1;Pour utiliser ceci, les expressions rationnelles de d�contamination doivent �tre incluses dans les requ�tes pr�par�es. L'expression rationnelle doit se situer imm�diatement apr�s le caract�re % dans la requ�te pr�par�e, et doit �tre entour�e d'accolades {}. Par exemple, si votre application attend une entr�e alphanum�rique, vous pouvez utiliser :
       "SELECT foo FROM bar WHERE input = %s"
    
avec d'autres pilotes, et ne risquer au pire qu'une requ�te �chou�e. Mais avec FreeTDS, vous devez utiliser :
       "SELECT foo FROM bar WHERE input = %{([A-Za-z0-9]+)}s"
    
tout ce qui ne correspond pas � l'expression rationnelle est alors rejet�, et la requ�te est maintenant s�re.
Alternativement, vous pouvez utiliser le pilote ODBC tiers, qui offre la s�curit� des requ�tes pr�par�es authentiques.
| Description: | Dur�e de vie des connexions inactives | 
|---|---|
| Syntaxe: | DBDExptime dur�e en secondes | 
| D�faut: | DBDExptime 300 | 
| Contexte: | configuration du serveur, serveur virtuel | 
| Statut: | Extension | 
| Module: | mod_dbd | 
Cette directive permet de d�finir la dur�e de vie des connexions inactives lorsque le nombre de connexions sp�cifi� par la directive DBDKeep a �t� d�pass� (plates-formes thread�es uniquement).
| Description: | Ex�cute une instruction SQL apr�s connexion � une base de donn�es | 
|---|---|
| Syntaxe: | DBDInitSQL "instruction SQL" | 
| Contexte: | configuration du serveur, serveur virtuel | 
| Statut: | Extension | 
| Module: | mod_dbd | 
Les modules qui le souhaitent peuvent ex�cuter une ou plusieurs instructions SQL apr�s connexion � une base de donn�es. Par exemple initialiser certaines valeurs, ou ajouter une entr�e dans le journal lors d'une nouvelle connexion � la base de donn�es.
| Description: | Nombre maximum de connexions maintenues | 
|---|---|
| Syntaxe: | DBDKeep nombre | 
| D�faut: | DBDKeep 2 | 
| Contexte: | configuration du serveur, serveur virtuel | 
| Statut: | Extension | 
| Module: | mod_dbd | 
Cette directive permet de d�finir le nombre maximum de connexions � maintenir par processus, en dehors de celles servant � g�rer les pics de demandes (plates-formes thread�es uniquement).
| Description: | Nombre maximum de connexions | 
|---|---|
| Syntaxe: | DBDMax nombre | 
| D�faut: | DBDMax 10 | 
| Contexte: | configuration du serveur, serveur virtuel | 
| Statut: | Extension | 
| Module: | mod_dbd | 
Cette directive permet de d�finir le nombre maximum effectif de connexions par processus (plates-formes thread�es uniquement).
| Description: | Nombre minimum de connexions | 
|---|---|
| Syntaxe: | DBDMin nombre | 
| D�faut: | DBDMin 1 | 
| Contexte: | configuration du serveur, serveur virtuel | 
| Statut: | Extension | 
| Module: | mod_dbd | 
Cette directive permet de d�finir le nombre minimum de connexions par processus (plates-formes thread�es uniquement).
| Description: | Param�tres de la connexion � la base de donn�es | 
|---|---|
| Syntaxe: | DBDParams
param1=valeur1[,param2=valeur2] | 
| Contexte: | configuration du serveur, serveur virtuel | 
| Statut: | Extension | 
| Module: | mod_dbd | 
Cette directive permet de sp�cifier des param�tres selon les besoins du pilote concern�. En g�n�ral, les param�tres � passer concernent tout ce qui n'a pas de valeur par d�faut comme le nom d'utilisateur, le mot de passe, le nom de la base de donn�es, le nom d'h�te et le num�ro de port de la connexion.
Les param�tres de la cha�ne de connexion en fonction des diff�rents pilotes comprennent :
PQconnectdbpartie1:partie2 est utilis� dans
    sqlite_open(partie1, atoi(partie2), NULL)sqlite3_open| Description: | Utiliser ou non des connexions persistentes | 
|---|---|
| Syntaxe: | DBDPersist On|Off | 
| Contexte: | configuration du serveur, serveur virtuel | 
| Statut: | Extension | 
| Module: | mod_dbd | 
Si cette directive est d�finie � Off, les connexions persistentes et les connexions group�es sont d�sactiv�es. � la demande d'un client, une nouvelle connexion � la base de donn�es est ouverte, et ferm�e imm�diatement � l'issue du traitement. Cette configuration ne doit �tre utilis�e qu'� des fins de d�bogage, ou sur des serveurs � charge faible.
Par d�faut, les groupes de connexions persistentes sont activ�s (ou une seule connexion persistente du style LAMP pour les serveurs non thread�s), et c'est la configuration qui devrait �tre utilis�e dans la plupart des cas sur un serveur en production.
Avant la version 2.2.2, cette directive n'acceptait que les
    valeurs 0 et 1 au lieu de Off
    et On, respectivement.
| Description: | D�finit une requ�te SQL pr�par�e | 
|---|---|
| Syntaxe: | DBDPrepareSQL "requ�te SQL" �tiquette | 
| Contexte: | configuration du serveur, serveur virtuel | 
| Statut: | Extension | 
| Module: | mod_dbd | 
Pour les modules tels que les modules d'authentification, qui utilisent de mani�re r�p�t�e la m�me requ�te SQL, on peut optimiser les performances en pr�parant la requ�te une fois pour toutes au d�marrage, plut�t qu'� chaque utilisation. Cette directive permet de pr�parer une requ�te SQL et de lui assigner une �tiquette.
| Description: | Sp�cifie un pilote SQL | 
|---|---|
| Syntaxe: | DBDriver nom | 
| Contexte: | configuration du serveur, serveur virtuel | 
| Statut: | Extension | 
| Module: | mod_dbd | 
Cette directive permet de sp�cifier un pilote apr_dbd par son
    nom. Le pilote doit �tre install� sur votre syst�me (sur la plupart
    des syst�mes, il s'agit d'un objet partag� ou d'une dll). Par
    exemple, DBDriver mysql va s�lectionner le pilote MySQL
    dans la biblioth�que apr_dbd_mysql.so.