Maison > base de données > tutoriel mysql > Pourquoi utiliser mysql_real_escape_string au lieu d'addlashes pour les requêtes MySQL ?

Pourquoi utiliser mysql_real_escape_string au lieu d'addlashes pour les requêtes MySQL ?

DDD
Libérer: 2024-11-14 16:47:02
original
438 Les gens l'ont consulté

Why Use mysql_real_escape_string Instead of addslashes for MySQL Queries?

Comprendre les différences entre mysql_real_escape_string et addlashes

En PHP, deux fonctions sont couramment utilisées pour échapper des chaînes avant de les utiliser dans des requêtes de base de données : mysql_real_escape_string et addlashes. Bien que les deux servent des objectifs similaires, il existe des différences subtiles à prendre en compte.

ajoute des barres obliques

Cette fonction ajoute des barres obliques inverses avant des caractères spécifiques : ' (guillemet simple), " (guillemet double ), (barre oblique inverse) et NUL (l'octet NULL). Il aide à protéger contre les attaques par injection SQL en empêchant ces caractères d'être interprétés comme faisant partie de la requête.

mysql_real_escape_string

Cette fonction, obsolète dans PHP 7.3.0, est conçue spécifiquement pour MySQL. Elle ajoute des barres obliques inverses aux caractères dont MySQL a besoin pour être échappés, notamment x00, n, r, x1a, ' (guillemet simple) et " (double). citation). Cependant, il est important de noter que l'implémentation réelle de l'échappement dans MySQL peut impliquer des caractères supplémentaires.

Signification des caractères non échappés dans mysql_real_escape_string

La principale différence entre les deux Les fonctions résident dans les caractères qui ne sont pas échappés par des barres obliques ajoutées. Ceux-ci incluent :

  • x00 : Ce caractère représente l'octet NULL, qui est souvent utilisé pour marquer la fin d'une chaîne en C et dans d'autres langages de programmation. L'échapper permet d'éviter la résiliation prématurée de la requête.
  • n : Ce caractère représente un caractère de nouvelle ligne. L'échapper garantit qu'il est traité comme faisant partie de la chaîne dans la requête, plutôt que de provoquer un retour immédiat à la ligne suivante.
  • r : Ce caractère représente un caractère de retour chariot. Il est important de l'échapper pour la même raison que n.
  • x1a : Ce caractère est connu sous le nom de caractère "control-Z" et peut provoquer un comportement inattendu dans les requêtes MySQL. L'échapper évite tout problème potentiel.

Recommandation

Il est généralement recommandé d'utiliser la fonction d'échappement de votre fournisseur de données, telle que mysql_real_escape_string, au lieu d'ajouts de barres obliques. Cela garantit que la chaîne est préparée de manière appropriée pour la base de données spécifique utilisée. Bien que mysql_real_escape_string soit obsolète, il est probable que les versions plus récentes de PHP auront des fonctions de remplacement similaires pour les chaînes d'échappement dans les requêtes MySQL.

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.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal