De plus amples recherches, j'ai trouvé:
http://dev.mysql.com/doc/refman/5.1/en/news-5-1-11.html
Correction de sécurité:
Une faille de sécurité d'injection SQL a été trouvée dans le traitement de codage multi-octets. Le bogue était dans le serveur, analysant incorrectement la chaîne échappée avec la fonction API C mysql_real_escape_string ().
Cette vulnérabilité a été découverte et signalée par Josh Berkus et Tom Lane dans le cadre de la collaboration de sécurité inter-projets du consortium OSDB. Pour plus d'informations sur l'injection SQL, veuillez consulter le texte suivant.
Discussion. Une faille de sécurité d'injection SQL a été trouvée dans le traitement de codage multi-octets. Une faille de sécurité d'injection SQL peut inclure une situation dans laquelle, lorsqu'un utilisateur a fourni des données à insérer dans une base de données, l'utilisateur peut injecter des instructions SQL dans les données que le serveur exécutera. En ce qui concerne cette vulnérabilité, lorsque l'échappement sans prise en compte du jeu de caractères est utilisé (par exemple, ajoute des barres obliques () en PHP), il est possible de contourner l'échappement dans certains jeux de caractères multi-octets (par exemple, SJIS, BIG5 et GBK). Par conséquent, une fonction telle que addlashes () ne peut pas empêcher les attaques par injection SQL. Il est impossible de résoudre ce problème côté serveur. La meilleure solution est pour les applications d'utiliser l'échappement sensible au jeu de caractères offert par une fonction telle que mysql_real_escape_string ().
Cependant, un bogue a été détecté dans la façon dont le serveur MySQL analyse la sortie de mysql_real_escape_string (). En conséquence, même lorsque la fonction de jeu de caractères mysql_real_escape_string () était utilisée, l'injection SQL était possible. Ce bug a été corrigé.
Solutions de contournement. Si vous ne parvenez pas à mettre à niveau MySQL vers une version qui inclut le correctif du bogue dans l'analyse mysql_real_escape_string (), mais que vous exécutez MySQL 5.0.1 ou supérieur, vous pouvez utiliser le mode SQL NO_BACKSLASH_ESCAPES comme solution de contournement. (Ce mode a été introduit dans MySQL 5.0.1.) NO_BACKSLASH_ESCAPES active un mode de compatibilité standard SQL, où la barre oblique inverse n'est pas considérée comme un caractère spécial. Le résultat sera que les requêtes échoueront.
Pour définir ce mode pour la connexion actuelle, entrez l'instruction SQL suivante:
SET sql_mode='NO_BACKSLASH_ESCAPES';
Vous pouvez également définir le mode globalement pour tous les clients:
SET GLOBAL sql_mode='NO_BACKSLASH_ESCAPES';
Ce mode SQL peut également être activé automatiquement lorsque le serveur démarre en utilisant l'option de ligne de commande --sql-mode = NO_BACKSLASH_ESCAPES ou en définissant sql-mode = NO_BACKSLASH_ESCAPES dans le fichier d'options du serveur (par exemple, my.cnf ou my.ini , selon votre système). (Bogue n ° 8378, CVE-2006-2753)
Voir aussi le bogue # 8303.