20-11-2008, 03:51 PM
Plus simplement, pour éviter les injections, il suffit de contrôler les données qui entrent dans le programme. Pour ça, il faut écrire des validateurs (c'est une force des frameworks, qui proposent d'excellentes solutions de ce genre) qui vérifient le format des données. Donc, si c'est un identifiant correct (is_numeric($var) === true && $var > 0), mais également des regex pour les chaînes, etc. Si tu attends une valeur dans une liste, tu vérifies que la valeur reçue est bien dans la liste, etc.
Bref, les données entrées doivent être fiables : ce sont celles que tu attends et rien d'autre.
Ensuite, tu échappes avec la fonction de ton SGBDR (mysql_real_escape_string() pour MySQL, effectivement) les chaînes de caractères (ça ne sert à rien d'échapper un nombre ^^).
Le problème, c'est qu'on a beau le savoir, on en oublie forcément quelque part. :heuuu:
Sephi-Chan
Bref, les données entrées doivent être fiables : ce sont celles que tu attends et rien d'autre.
Ensuite, tu échappes avec la fonction de ton SGBDR (mysql_real_escape_string() pour MySQL, effectivement) les chaînes de caractères (ça ne sert à rien d'échapper un nombre ^^).
Le problème, c'est qu'on a beau le savoir, on en oublie forcément quelque part. :heuuu:
Sephi-Chan