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()` protège-t-il vraiment contre l'injection SQL, et pourquoi devriez-vous utiliser `mysql_real_escape_string()` à la place ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-15 19:34:17255parcourir

Does `addslashes()` Really Protect Against SQL Injection, and Why Should You Use `mysql_real_escape_string()` Instead?

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!

Déclaration:
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