From: Lucien Gentis Le module 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
+ 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
+ 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
Pour vous connecter à votre base de données, vous devez spécifier un + pilote et des paramètres de connexion qui diffèrent selon le moteur de base + de données. Par exemple, pour vous connecter à mysql, spécifiez ce qui suit + :
+ +Vous pourrez alors utiliser cette connexion dans de nombreux autres
+ modules comme
Voir la syntaxe de la directive
apr_dbd_prepared_t
et s'utilisent dans toute requête
- SQL ou commande select préparée par apr_dbd.
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 httpd.conf, ou de fournir leurs propres directives
+ requêtes préparées et de préciser quelles requêtes doivent être
+ spécifiées dans httpd.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.
+ Lorsqu'on utilise des requêtes préparées avec des bases de
+ données MySQL, il est préférable de définir
+ 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 sûres 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 à +
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 sûres 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 de
- Perl (NdT : taint checking
). Chaque entrée est comparée
- à une expression rationnelle, et
- seules les entrées qui correspondent sont utilisées, en accord avec
+ 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 de
+ Perl (NdT : taint checking
). Chaque entrée est comparée
+ Ã une expression rationnelle, et
+ seules les entrées qui correspondent sont utilisées, en accord avec
le raccourci 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 :
+ 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 - en échec. Mais avec FreeTDS, vous devez utiliser :
+avec d'autres pilotes, et ne risquer au pire qu'une requête + en échec. 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 ainsi désormais sûre.
+tout ce qui ne correspond pas à l'expression rationnelle est + alors rejeté, et la requête est ainsi désormais sûre.
Alternativement, vous pouvez utiliser le pilote ODBC tiers, qui - offre la sécurité des requêtes préparées authentiques.
+ offre la sécurité des requêtes préparées authentiques.Cette directive spécifie 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.
Cette directive spécifie 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.
Cette directive spécifie 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 :
+Cette directive spécifie 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 :
PQconnectdb
PQconnectdb
partie1:partie2
est utilisé dans
+ partie1:partie2
est utilisé dans
sqlite_open(partie1, atoi(partie2), NULL)
sqlite3_open
sqlite3_open
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 à +
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 +
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 + 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
@@ -258,17 +281,17 @@ données
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.
Cette directive définit le nombre minimum de connexions - par processus (plates-formes threadées seulement).
+Cette directive définit le nombre minimum de connexions + par processus (plates-formes threadées seulement).
Cette directive définit le nombre maximum de connexions - à maintenir par processus, en dehors de celles servant à gérer les - pics de demandes (plates-formes threadées seulement).
+Cette directive définit le nombre maximum de connexions + à maintenir par processus, en dehors de celles servant à gérer les + pics de demandes (plates-formes threadées seulement).
Cette directive définit le nombre maximum effectif de - connexions par processus (plates-formes threadées seulement).
+Cette directive définit le nombre maximum effectif de + connexions par processus (plates-formes threadées seulement).
Cette directive définit 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 seulement).
+Cette directive définit 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 seulement).
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.
+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.