vista - Sanitizando los parámetros de usuario de MySQL
vistas con parametros de entrada (2)
¿Qué idiomas necesitas para apoyar? Es mucho mejor utilizar la desinfección integrada de un idioma que escribir la suya propia.
Editar: mirando mysql_real_escape_string
en php.net:
mysql_real_escape_string()
llama a la función de biblioteca de MySQLmysql_real_escape_string
, que antepone barras diagonales inversas a los siguientes caracteres:/x00
,/n
,/r
,/
,''
,"
y/x1a
.
¿Cuáles son los caracteres peligrosos que deberían ser reemplazados en la entrada del usuario cuando la entrada de los usuarios se insertará en una consulta MySQL? Sé sobre comillas, comillas dobles, / r y / n. ¿Hay otros?
(No tengo la opción de usar un conector inteligente que acepte parámetros, así que tengo que crear la consulta yo mismo y esto se implementará en múltiples lenguajes de programación, incluidos algunos poco claros, por lo que las soluciones como mysql_real_escape_string
en PHP no son válidas)
mysql_real_escape_string () de los documentos de mysql.com:
La cadena desde se codifica a una cadena SQL escapada, teniendo en cuenta el conjunto de caracteres actual de la conexión. El resultado se coloca en y se agrega un byte nulo de terminación. Los caracteres codificados son NUL (ASCII 0), "/ n", "/ r", "/", "''", "" "y Control-Z (consulte la Sección 8.1," Valores literales "). (Estrictamente hablando, MySQL requiere que solo se escape la barra invertida y el carácter de comillas utilizado para citar la cadena en la consulta. Esta función cita los otros caracteres para que sean más fáciles de leer en los archivos de registro.
mysql_real_escape_string () es consciente del conjunto de caracteres, por lo que replicar todas sus capacidades (especialmente contra ataques multibyte) no es una pequeña cantidad de trabajo.
De http://cognifty.com/blog.entry/id=6/addslashes_dont_call_it_a_comeback.html :
AS = addslashes() MRES = mysql_real_escape_string() ACS = addcslashes() //called with "///000/n/r''/"/032%_" Feature AS MRES ACS escapes quote, double quote, and backslash yes yes yes escapes LIKE modifiers: underscore, percent no no yes escapes with single quotes instead of backslash no yes*1 no character-set aware no yes*2 no prevents multi-byte attacks no yes*3 no