Maison > développement back-end > tutoriel php > mysql_real_escape_string est-il suffisant pour empêcher l'injection SQL ?

mysql_real_escape_string est-il suffisant pour empêcher l'injection SQL ?

Susan Sarandon
Libérer: 2024-10-26 21:30:29
original
784 Les gens l'ont consulté

  Is mysql_real_escape_string Enough to Prevent SQL Injection?

Erreurs à éviter avec mysql_real_escape_string

Bien qu'il s'agisse d'une méthode couramment utilisée pour empêcher l'injection SQL, mysql_real_escape_string peut ne pas protéger contre les attaques s'il est mal utilisé . Bien qu'il échappe efficacement les caractères spéciaux dans les valeurs de chaîne, certains scénarios peuvent survenir dans lesquels son efficacité est compromise.

Utilisation correcte : valeurs de chaîne entre guillemets

mysql_real_escape_string ne doit être utilisé que lorsque insertion de contenu textuel entre guillemets dans les instructions SQL. Par exemple :

$value = mysql_real_escape_string($value, $link);
$sql = "... `foo` = '$value' ...";
Copier après la connexion

Utilisations incorrectes

Des applications incorrectes de mysql_real_escape_string peuvent conduire à des vulnérabilités. Les erreurs courantes incluent :

  • L'utiliser dans des contextes non cités (par exemple, ... column_name = $value ...)
  • L'appliquer à des valeurs non-chaînes (par exemple, entrées numériques)
  • Une mauvaise application en dehors des contextes SQL (par exemple, $sql = mysql_real_escape_string("... foo = '$value' ..."))

Considérations sur l'encodage

Un autre écueil est une mauvaise configuration de l'encodage de la connexion à la base de données. La méthode correcte est :

mysql_set_charset('utf8', $link);
Copier après la connexion

Cependant, l'utilisation de mysql_query("SET NAMES 'utf8'", $link) peut entraîner des écarts entre l'encodage supposé de l'API mysql_ et l'encodage réel de la base de données. Cela peut potentiellement permettre des attaques par injection impliquant des chaînes multi-octets.

Conclusion

mysql_real_escape_string reste un outil précieux s'il est utilisé comme prévu. Cependant, reconnaître ses limites et l’appliquer correctement est essentiel pour prévenir les vulnérabilités d’injection SQL. Il est recommandé d'explorer des alternatives plus modernes telles que des déclarations préparées pour une sécurité et une facilité d'utilisation accrues.

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
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