estoy usando la función de MySQL API¿Qué caracteres deben evitarse para evitar (My) inyecciones de SQL?
mysql_real_escape_string()
Sobre la base de la documentación, que se escapa de los siguientes caracteres:
\0
\n
\r
\
'
"
\Z
Ahora, busqué en la biblioteca de seguridad ESAPI de OWASP.org y en el puerto de Python que tenía el siguiente código (http://code.google.com/p/owasp-esapi-python/source/browse/esapi/codecs/mysql.py):
"""
Encodes a character for MySQL.
"""
lookup = {
0x00 : "\\0",
0x08 : "\\b",
0x09 : "\\t",
0x0a : "\\n",
0x0d : "\\r",
0x1a : "\\Z",
0x22 : '\\"',
0x25 : "\\%",
0x27 : "\\'",
0x5c : "\\\\",
0x5f : "\\_",
}
Ahora, me pregunto si todos los personajes son realmente necesarios para ser eS vestido de capa. Entiendo por qué% y _ están ahí, son metacaracteres en el operador LIKE, pero no puedo entender simplemente por qué agregaron caracteres de retroceso y tabulador (\ b \ t)? ¿Existe un problema de seguridad si realiza una consulta:
SELECT a FROM b WHERE c = '...user input ...';
¿Dónde la entrada del usuario contiene tabuladores o caracteres de retroceso?
Mi pregunta es aquí: ¿Por qué incluyeron \ b \ t en la biblioteca de seguridad de ESAPI? ¿Hay situaciones en las que es posible que deba escapar de esos caracteres?
No soy una persona de pitón o una persona MySql, pero mi primera aunque era buscar pruebas unitarias para esto, por desgracia, no lo hicieron revelar algo útil- http://code.google.com/p/owasp-esapi-python/source/browse/esapi/test/codecs/test_mysql.py – RichardOD