webleads-tracker

Protection requête Mysql

Adrien
Avatar
Bonjour à tous,

Je me pose une petite question depuis un bon bout de temps sur la protection des roquets SQL.

J'utilise l'objet em_db d'emajine pour effectuer la plupart de mes traitements mysql.
Comment faire pour protéger ses requêtes ? Je pense qu'il faut bannir "mysql_real_escape_string", peut-on préparer ses requêtes comme avec l'objet PDO ?

Comment procédé vous ?
Adrien Développeur

Thomas [LE KLUB]
Avatar
Bonjour Adrien,

très bonne question que la tienne ! Avec les pilotes BDD pour l'instant mis en place il n'y a pas moyen de préparer les requêtes, ça viendra un jour :D

Donc pour pallier le soucis dans l'immédiat l'idée c'est de préparer la forme de la requête avec un sprintf(), il va quand même ensuite falloir utiliser un ptit peu de mysql_real_escape_string :s

$queryBase = "INSERT INTO `target_table` (`field1`, `field2`, `field3`) VALUES (%d, '%s', %f)";
$query = sprintf($queryBase, 42, mysql_real_escape_string($chaine), 1.14);
em_db::exec($query);


Enfin voilà pour ma part, s'il y en a d'autres parmi vous qui avez des idées ou solutions je suis preneur !

Bonne journée,
Thomas

Adrien
Avatar
Bonjour Thomas,

Merci pour ta réponse ;)

Du coup, ce qui m'embête c'est que "mysql_real_escape_string" va disparaitre dans les versions avenir de PHP... Ça ne va pas être évidant pour tous les sites tournants avec des spécifiques :s .

Ça me rassure un peu de ne pas être le seul à me poser la question.
Adrien Développeur

Thomas [LE KLUB]
Avatar
Alors mysql_real_escape_string ne va pas disparaître totalement, simplement le module mysql ne fera plus parti du noyau et sera remplacé par mysqli. Donc il sera toujours possible de l'installer séparément, je pense que le labo le mettra pour éviter ce problème de compatibilité.

Et puis pour être honnête, je ne sais vraiment pas quand Médialibs va upgrader sa version de php....