Maison >base de données >tutoriel mysql >`addslashes()` protège-t-il vraiment contre l'injection SQL, et pourquoi devriez-vous utiliser `mysql_real_escape_string()` à la place ?
addslashes()
contre mysql_real_escape_string()
dans la prévention de l'injection SQL
Bien que souvent présenté comme une alternative plus sûre à addslashes()
, mysql_real_escape_string()
reste la méthode recommandée pour prévenir les vulnérabilités d'injection SQL dans les applications PHP. Comprendre les limites de addslashes()
est essentiel pour mettre en place une sécurité robuste.
Considérez ceci : une requête SQL, s'appuyant sur addslashes()
pour la vérification des entrées utilisateur, rencontre une chaîne contenant un guillemet simple ('). addslashes()
pourrait identifier de manière incorrecte cette citation comme faisant partie d'un caractère multi-octets, laissant la requête susceptible d'être injectée.
Un attaquant peut exploiter cela en ajoutant un trait d'union (-) ou un caractère similaire qui termine une séquence multi-octets dans certains codages Unicode (comme ISO-8859-1, mais pas UTF-8). Cela incite addslashes()
à traiter le guillemet simple comme faisant partie d'un caractère multi-octets valide, en contournant le mécanisme d'échappement et en permettant l'exécution de code malveillant.
La vulnérabilité est spécifique à l'encodage. UTF-8, un codage Unicode largement utilisé, est généralement à l'abri de cette attaque particulière car il n'utilise pas le même caractère de terminaison multi-octets.
Pour une protection optimale contre les injections SQL, donnez toujours la priorité à mysql_real_escape_string()
sur addslashes()
. Complétez cela avec une validation des entrées au niveau de l'application et l'utilisation d'instructions préparées pour les interactions avec la base de données. En reconnaissant les faiblesses de addslashes()
et en mettant en œuvre ces bonnes pratiques, les développeurs peuvent réduire considérablement le risque d'attaques par injection SQL.
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!