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
Libérer: 2024-10-21 13:30:03
original
276 Les gens l'ont consulté

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!

source:php
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