"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-12-21
Parcourir:676

  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 utilisé de manière incorrecte . 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 citées

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' ...";

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

Cependant, l'utilisation de mysql_query("SET NAMES 'utf8'", $link) peut entraîner des écarts entre les API mysql_ l'encodage supposé 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 les instructions préparées pour une sécurité et une facilité d'utilisation accrues.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3