Maison >base de données >tutoriel mysql >Quand devriez-vous choisir « mysql_real_escape_string » plutôt que « addslashes » pour échapper des chaînes en PHP ?

Quand devriez-vous choisir « mysql_real_escape_string » plutôt que « addslashes » pour échapper des chaînes en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-17 13:08:021016parcourir

When should you choose `mysql_real_escape_string` over `addslashes` for escaping strings in PHP?

mysql_real_escape_string vs addlashes : comprendre les différences

En PHP, les fonctions mysql_real_escape_string et addlashes sont souvent utilisées pour nettoyer les chaînes destinées aux requêtes de base de données. Bien qu'ils présentent certaines similitudes, il existe entre eux des différences clés qui peuvent avoir des implications sur la sécurité et l'intégrité de vos données.

addslashes

addslashes échappe à certains caractères qui sont problématique dans les requêtes SQL. Cela inclut les guillemets simples ('), les guillemets doubles ("), les barres obliques inverses () et le caractère NUL (octet nul). En ajoutant des barres obliques inverses au début de ces caractères, les barres obliques ajoutées empêchent qu'ils soient interprétés comme des caractères spéciaux, minimisant ainsi le risque de SQL. injection vulnérabilités.

mysql_real_escape_string

mysql_real_escape_string est une fonction plus spécialisée conçue spécifiquement pour être utilisée avec MySQL. Elle appelle la fonction de la bibliothèque MySQL mysql_real_escape_string, qui ajoute des barres obliques inverses à un ensemble étendu de. caractères qui incluent, sans s'y limiter, ceux échappés par des barres obliques supplémentaires. Ces caractères incluent. x00 (zéro octet), n (saut de ligne), r (retour chariot) et x1a (fin de fichier).

Différences clés

Le principal La différence entre addlashes et mysql_real_escape_string est l'ensemble de caractères auxquels ils échappent. mysql_real_escape_string échappe à une plus large gamme de caractères, y compris certains caractères de contrôle et. les caractères de fin de ligne qui ajoutent des barres obliques ne le font pas.

De plus, mysql_real_escape_string est conscient des exigences spécifiques de MySQL lors de l'échappement de chaînes. En tant que tel, il peut implémenter différentes règles d'échappement en fonction de la version de MySQL utilisée. Par exemple, les versions récentes de MySQL utilisent généralement des guillemets doubles pour échapper aux guillemets simples, tandis que les versions antérieures utilisent des barres obliques inverses. mysql_real_escape_string s'adaptera en conséquence, garantissant que les chaînes sont correctement échappées pour la version spécifique de MySQL utilisée.

Signification des caractères supplémentaires échappés par mysql_real_escape_string

Les caractères échappés par mysql_real_escape_string mais pas par des barres obliques supplémentaires, incluez des caractères de contrôle tels que x00 et x1a. Ces caractères peuvent avoir des conséquences inattendues au sein d'une base de données, comme provoquer une corruption des données ou l'arrêt de la connexion à la base de données.

De plus, l'échappement des caractères de fin de ligne (n et r) peut être crucial lors du stockage de plusieurs lignes. données. S'ils ne sont pas correctement échappés, ces caractères peuvent introduire des sauts de ligne ou des retours chariot dans vos données, perturbant potentiellement leur lisibilité et leur utilisation.

Conclusion

Alors que addlashes fournit un échappement de base pour les caractères problématiques courants dans les requêtes SQL, mysql_real_escape_string est un choix plus complet et plus fiable pour échapper les chaînes destinées aux bases de données MySQL. En tenant compte des exigences spécifiques de MySQL et en échappant à un ensemble plus large de caractères potentiellement perturbateurs, mysql_real_escape_string améliore la sécurité et l'intégrité de vos données.

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