Maison > base de données > tutoriel mysql > le corps du texte

Les caractères de retour arrière et de tabulation doivent-ils être échappés dans les injections SQL ?

Linda Hamilton
Libérer: 2024-10-28 04:09:30
original
132 Les gens l'ont consulté

 Should Backspace and Tab Characters Be Escaped in SQL Injections?

Échapper aux caractères spéciaux dans les injections SQL

Pour empêcher les injections SQL, il est crucial d'échapper aux caractères spécifiques qui peuvent manipuler l'exécution des requêtes. Selon la fonction mysql_real_escape_string() de l'API MySQL, ces caractères doivent être échappés :

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

Cependant, la bibliothèque de sécurité ESAPI d'OWASP.org pour Python va au-delà de ces caractères, en incluant les éléments suivants dans son mécanisme d'encodage :

SELECT a FROM b WHERE c = '...user input ...';
Copier après la connexion

Bien qu'il soit compréhensible pourquoi les métacaractères comme « % » et « _ » doivent être échappés, l'inclusion des caractères de retour arrière (« b ») et de tabulation (« t ») soulève des questions.

Problèmes de sécurité liés aux tabulateurs et aux caractères de retour arrière

Caractère de tabulation ('t')

Un caractère de tabulation (code ASCII 9) déplace le curseur au taquet de tabulation suivant, défini pour un système particulier. Dans une requête SQL, une tabulatrice peut être utilisée pour insérer des espaces vides ou aligner des données. En fonction des paramètres des taquets de tabulation, un attaquant pourrait potentiellement modifier une requête ou injecter des espaces, entraînant un comportement involontaire.

Caractère de retour arrière ('b')

Un retour arrière Le caractère (code ASCII 8) déplace le curseur d'un caractère vers l'arrière, l'écrasant ainsi. Dans une requête SQL, un retour arrière peut être utilisé pour effacer des données précédemment saisies, ce qui peut conduire à des injections ou à une manipulation de données.

Exemple : exploitation du caractère de retour arrière

Considérez ce qui suit requête :

Bobby]dor[p TA[ble[s
Copier après la connexion

Si un utilisateur malveillant saisit une valeur contenant des caractères de retour arrière, il pourrait potentiellement effacer une partie de la requête, entraînant un comportement involontaire. Par exemple, en insérant cette entrée :

SELECT a FROM b WHERE c = 'Bobby';
Copier après la connexion

Après les espaces arrière, supprimez les caractères "[dor[p TA[ble[s", la requête devient effectivement :

Ce malware malveillant l'entrée pourrait potentiellement renvoyer toutes les lignes où c est égal à « Bobby », compromettant potentiellement les informations sensibles.

Conclusion

Bien que l'échappement des caractères de tabulation et de retour arrière ne soit pas généralement requis, ils peut être utile dans certains scénarios pour empêcher les injections SQL. En échappant à ces caractères, les développeurs peuvent garantir que les utilisateurs malveillants ne peuvent pas exploiter les vulnérabilités potentielles pour falsifier ou compromettre les requêtes SQL.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!