Maison > développement back-end > tutoriel php > mysql_real_escape_string() peut-il vraiment empêcher les attaques par injection SQL ?

mysql_real_escape_string() peut-il vraiment empêcher les attaques par injection SQL ?

Mary-Kate Olsen
Libérer: 2024-12-27 20:32:09
original
381 Les gens l'ont consulté

Can mysql_real_escape_string() Really Prevent SQL Injection Attacks?

Injection SQL contournant mysql_real_escape_string()

Malgré la croyance répandue, il est possible de contourner la sauvegarde mysql_real_escape_string() dans les injections SQL. Ceci est particulièrement préoccupant car cette fonction est généralement utilisée pour se protéger contre de telles attaques.

L'exploit

Une attaque démontrant cette vulnérabilité a été décrite dans le message d'origine. La clé est d'exploiter une séquence spécifique de caractères ("xbfx27") en conjonction avec certains jeux de caractères (par exemple, gbk). Lorsqu'elle est traitée par mysql_real_escape_string() dans ces conditions, la charge utile génère un caractère ' non échappé, qui peut ensuite être exploité à des fins d'injection.

Les implications

Cette vulnérabilité a des implications considérables, étant donné la prédominance de mysql_real_escape_string() comme mécanisme de défense contre les injections SQL. Cela affecte les applications PHP utilisant les extensions mysql_ ou PDO_MySQL, en particulier lorsque des jeux de caractères vulnérables sont utilisés ou que les instructions préparées émulées de PDO sont utilisées.

Pratiques de sécurité

Pour atténuer cela vulnérabilité, il est essentiel de respecter les bonnes pratiques :

  • Migrer vers les versions MySQL qui ne sont pas concernées par la bug mysql_real_escape_string() (5.1.20, 5.0.22 ou 5.1.11).
  • Utilisez des jeux de caractères non vulnérables pour le codage de connexion (par exemple, utf8, utf8mb4).
  • Désactivez l'émulation déclarations préparées dans PDO (PDO::ATTR_EMULATE_PREPARES).
  • Utilisez le paramètre de jeu de caractères DSN de PDO pour définir correctement l'encodage de la connexion dans PHP 5.3.6 ou version ultérieure.
  • Envisagez d'utiliser de véritables instructions préparées avec PDO ou MySQLi, qui sont pas affecté par cette vulnérabilité.

En suivant ces directives, vous pouvez améliorer la sécurité de votre applications de base de données et protection contre les attaques par injection SQL qui tentent de contourner la fonction mysql_real_escape_string().

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal