Maison >développement back-end >tutoriel php >Mysql_real_escape_string() et addlashes() sont-ils équivalents pour empêcher l'injection SQL ?

Mysql_real_escape_string() et addlashes() sont-ils équivalents pour empêcher l'injection SQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-21 13:30:03281parcourir

Are mysql_real_escape_string() and addslashes() Equivalent in Preventing SQL Injection?

Comprendre la différence : mysql_real_escape_string() vs addlashes()

Alors que mysql_real_escape_string() et addlashes() sont utilisés pour échapper aux spéciaux caractères dans les chaînes pour empêcher les attaques par injection SQL, il existe des différences clés entre les deux fonctions.

mysql_real_escape_string()

Spécialement conçue pour la base de données MySQL, cette fonction ajoute des barres obliques à les caractères suivants :

  • x00
  • n
  • r
  • '
  • "
  • x1a

addslashes()

D'autre part, addslashes() n'ajoute des barres obliques qu'à trois caractères :

  • '
  • NUL

Implications en matière de sécurité

Applications Web qui s'appuient uniquement sur addlashes() pour la validation des entrées peut toujours être vulnérable aux attaques par injection SQL. En effet, addlashes() ne protège pas contre tous les caractères pouvant être utilisés dans une attaque par injection, à savoir :

  • Sauts de ligne (n et r) : Ces caractères peuvent être utilisés pour introduire de nouvelles lignes dans la requête, contournant potentiellement les contrôles de validation.
  • Commentaires (--) : Ces caractères peuvent être utilisés pour commenter le reste de la requête, permettant à un attaquant d'exécuter des commandes SQL arbitraires.
  • Caractères d'échappement supplémentaires (x1a) : mysql_real_escape_string() protège contre les caractères d'échappement supplémentaires que addlashes() ne fait pas, tels que comme x1a.

Recommandation

Pour une sécurité optimale, il est recommandé d'éviter d'utiliser à la fois mysql_real_escape_string() et addlashes() et d'utiliser à la place des requêtes paramétrées ou préparées déclarations. Ces méthodes vous permettent de lier les entrées de l'utilisateur à la requête sans avoir besoin d'un échappement manuel, ce qui est plus sûr et plus efficace.

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