Discussion:
mysqli_bind_param et mysqli_real_escape_string
(trop ancien pour répondre)
Jeremie
2009-01-19 21:35:43 UTC
Permalink
Bonjour à tous,

Je suis en train de développer un petit module permettant d'insérer du
texte dans une base depuis une interface basée sur FCKEditor.

Je compte utiliser la fonction bind_param, mais je voulais savoir si
cette fonction s'occupe de protéger les chaînes passées en paramètres,
ou bien faut-il que pour chaque argument j'applique escape_string dessus ?

Merci de vos réponses,


Jérémie
Olivier Miakinen
2009-01-19 23:14:27 UTC
Permalink
Bonjour,
Post by Jeremie
Je suis en train de développer un petit module permettant d'insérer du
texte dans une base depuis une interface basée sur FCKEditor.
Je compte utiliser la fonction [mysqli_]bind_param,
<cit. http://fr2.php.net/manual/fr/function.mysqli-bind-param.php>
Cette fonction est un alias de la fonction mysqli_stmt_bind_param().
Note: La fonction mysqli_bind_param() est obsolète et devrait être
supprimée.
</cit.>
Post by Jeremie
mais je voulais savoir si
cette fonction s'occupe de protéger les chaînes passées en paramètres,
ou bien faut-il que pour chaque argument j'applique escape_string dessus ?
Je n'y connais rien, mais en lisant la doc je vois que l'on sépare la
requête (mysqli_prepare) et les données (mysqli_stmt_bind_param), aussi
cette méthode semble naturellement protéger des injections dues au
mélange des deux dans un même appel.

Cela étant dit, je laisse les spécialistes répondre.
--
Olivier Miakinen
Mickael Wolff
2009-01-20 07:24:04 UTC
Permalink
Post by Jeremie
Bonjour à tous,
Je suis en train de développer un petit module permettant d'insérer du
texte dans une base depuis une interface basée sur FCKEditor.
Je compte utiliser la fonction bind_param, mais je voulais savoir si
La fonction membre de la classe mysqli_stmt.
Post by Jeremie
cette fonction s'occupe de protéger les chaînes passées en paramètres,
La fonction ne protège rien. Cependant, puisque la requête n'est pas
fabriquée, on évite les problèmes d'injection SQL.
Post by Jeremie
ou bien faut-il que pour chaque argument j'applique escape_string dessus ?
Non.
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org

Seeking for a position <http://lupusmic.org/pro/>
Pascal PONCET
2009-01-20 21:56:51 UTC
Permalink
Post by Jeremie
Je compte utiliser la fonction bind_param, mais je voulais savoir si
cette fonction s'occupe de protéger les chaînes passées en paramètres,
ou bien faut-il que pour chaque argument j'applique escape_string dessus ?
Bonjour,

Pour cette fonctionnalité, il vaut mieux utiliser l'interface PDO.
Ses objets supportent pratiquement les mêmes méthodes et propriétés que
Mysqli, mais en faisant abstraction du type de SGBD.
De plus, les entrées préparées sont systématiquement protégées.

voir : http://fr2.php.net/manual/fr/pdo.prepared-statements.php

Cordialement,
Pascal

Loading...