Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

mysqli_bind_param et mysqli_real_escape_string

3 réponses
Avatar
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
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

3 réponses

Avatar
Olivier Miakinen
Bonjour,

Le 19/01/2009 22:35, Jeremie a écrit :

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

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
Avatar
Mickael Wolff
Jeremie a écrit :
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.

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.

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/>
Avatar
Pascal PONCET
Jeremie a écrit :
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