Maison  >  Article  >  base de données  >  Pourquoi les caractères de retour arrière et de tabulation doivent-ils être échappés dans les requêtes MySQL ?

Pourquoi les caractères de retour arrière et de tabulation doivent-ils être échappés dans les requêtes MySQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-27 22:11:02991parcourir

  Why Should Backspace and Tab Characters Be Escaped in MySQL Queries?

Injections MySQL et échappement de caractères

Lors de l'utilisation de la fonction mysql_real_escape_string() de l'API MySQL, il est essentiel de s'assurer que tous les caractères vulnérables sont échappés pour empêcher les injections SQL. La documentation MySQL indique que les caractères suivants doivent être échappés :

<pre class="brush:php;toolbar:false">0x00 : "\0",
0x08 : "\b",
0x09 : "\t",
0x1a : "\Z",
0x22 : '\"',
0x25 : "\%",
0x27 : "\'",
0x5c : "\\",
0x5f : "\_",
\n \r \ ' " \Z

Cependant, en comparant cette liste avec le port Python de l'ESAPI, des caractères supplémentaires sont identifiés pour l'échappement, notamment :

SELECT a FROM b WHERE c = '...user input ...';

La préoccupation se pose concernant la nécessité d'échapper aux caractères de retour arrière (b) et de tabulation (t).

Réponse à la requête

"\bDELETE_MY_DATABASE"

Lorsque l'entrée utilisateur contient des tabulateurs ou un retour arrière caractères, cela pourrait présenter des risques pour la sécurité. Prenons un scénario dans lequel un acteur malveillant inclut ce qui suit à la fin de l'entrée de l'utilisateur :

Lorsqu'il est transmis à la base de données, le caractère d'espacement arrière effacera le guillemet simple précédent, conduisant à l'exécution du DELETE malveillant. requête.

Bibliothèque de sécurité ESAPI

La bibliothèque de sécurité ESAPI intègre des caractères de retour arrière et de tabulation pour s'échapper en raison de problèmes de sécurité potentiels :

  • Tabulator (t) : Les caractères de tabulation dans une chaîne peuvent perturber le comportement attendu de la base de données, permettant potentiellement aux attaquants de manipuler des données ou d'injecter des requêtes malveillantes.
  • Retour arrière (b) : Comme le montre l'exemple du fichier catting, les caractères de retour arrière peuvent écraser les caractères saisis précédemment, ce qui permet d'ajouter du code malveillant au début d'une requête sans être visiblement présent.

Conclusion

Par conséquent, il est recommandé de faire preuve de prudence et d'échapper à tous les caractères spécifiés dans la bibliothèque de sécurité de l'ESAPI lors du traitement des entrées utilisateur dans les requêtes MySQL. Bien que des caractères spécifiques tels que le retour arrière et la tabulation ne semblent pas intrinsèquement dangereux, leur impact, associé à d'autres mécanismes, peut constituer des menaces de sécurité importantes.

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