Malgré son utilisation généralisée, mysql_real_escape_string() n'est pas à l'abri des attaques par injection SQL.
Exigence : La connexion à la base de données doit utiliser un jeu de caractères vulnérable comme big5, cp932, gb2312, gbk ou sjis.
Étapes :
Résultat : En raison de la non-concordance de codage client-serveur, la requête contient un guillemet simple non échappé, ce qui entraîne une requête SQL réussie. injection.
Bogue dans mysql_real_escape_string() : Dans les versions antérieures de MySQL, les caractères multi-octets non valides étaient traités comme des octets simples à des fins d'échappement, même si le client était conscient du codage de la connexion.
Vulnérabilité PDO : Déclarations préparées émulées dans Les PDO sont construits à l'aide de mysql_real_escape_string() et sont donc vulnérables à cette attaque.
Pratiques sûres :
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!