Quels caractères doivent être échappés pour empêcher les injections de (mon) SQL?

Je suis de l'utilisation de MySQL de l'API de la fonction

mysql_real_escape_string()

Basée sur la documentation, il s'échappe les caractères suivants:

\0
\n
\r
\
'
"
\Z

Maintenant, j'ai regardé dans OWASP.org's ESAPI de sécurité de la bibliothèque et dans le Python port, elle avait le code suivant (http://code.google.com/p/owasp-esapi-python/source/browse/esapi/codecs/mysql.py):

        """
        Encodes a character for MySQL.
        """
        lookup = {
        0x00 : "\
        """
Encodes a character for MySQL.
"""
lookup = {
0x00 : "\\0",
0x08 : "\\b",
0x09 : "\\t",
0x0a : "\\n",
0x0d : "\\r",
0x1a : "\\Z",
0x22 : '\\"',
0x25 : "\\%",
0x27 : "\\'",
0x5c : "\\\\",
0x5f : "\\_",
}
"
, 0x08 : "\\b", 0x09 : "\\t", 0x0a : "\\n", 0x0d : "\\r", 0x1a : "\\Z", 0x22 : '\\"', 0x25 : "\\%", 0x27 : "\\'", 0x5c : "\\\\", 0x5f : "\\_", }

Maintenant, je me demande si tous ces personnages sont vraiment nécessaires pour être échappé. Je comprends pourquoi % " et " _ " sont là, ils sont des méta caractères COMME opérateur, mais je ne peux pas tout simplement comprendre pourquoi ont-ils ajouter la touche retour arrière et les caractères de tabulation (\b \t)? Est-il un problème de sécurité si vous faites une requête:

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

Où la saisie de l'utilisateur contient tabulation ou retour arrière personnages?

Ma question est là: Pourquoi ont-ils include \b \t dans l'ESAPI de sécurité de la bibliothèque? Sont là tout les situations où vous pourriez avoir besoin pour échapper à ces personnages?

source d'informationauteur Tower