Pregunta

Kohana menciona que utilizan mysql_real_escape_string a las entradas de bases de datos esterilice en su documentación. Sin embargo, mientras se degusta algunas consultas básicas a través de un formulario que se introdujeron en la base de datos tal y como entré ellos. Por ejemplo:

SELECT * FROM users WHERE username='admin' AND password='' OR ''=''

se introduce en que los datos de MySQL tal y como aparece. Yo estaba esperando a ver:

SELECT * FROM users WHERE username=\'admin\' AND password=\'\' OR \'\'=\'\' 

Estoy usando en el ORM en lugar de la base de datos, pero sé que trabajan juntos. Además, estoy utilizando el construido en la biblioteca de entrada ($ this-> entrada a posteriori) para recoger los datos de formularios. No he cambiado todos los controladores o bibliotecas que se relacionan con la seguridad.

No he peinado el código fuente, pero sí que escapar Kohana la cadena y luego quitar las barras antes de entrar en un campo db? Estoy un poco convencido de que este es el caso, pero quiero estar seguro.

Gracias

¿Fue útil?

Solución

Al escapar una consulta SQL, usted se está escapando los datos literales para que no entre en conflicto con la sintaxis SQL, por ejemplo, de modo que los apóstrofes no se interpretan como delimitadores de cadenas. MySQL puede almacenar apóstrofes sin escape y cualquier otra cosa realmente sin los datos que necesitan ser almacenados con escape en el tacto. Sería un error para almacenar los datos en su forma escapado sólo por lo que tendría que unescape de nuevo después de la recuperación de la misma.

A pesar de que no estoy familiarizado con Kohana, usted puede estar seguro de que está manejando su entrada correctamente si se le pide para almacenar una consulta y que le dan la misma vuelta consulta exacta.

Otros consejos

Kohana ORM le protege de la inyección de SQL de forma automática.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top