Cita:
Iniciado por gnzsoloyo Yo te sugeriría mejor que vayas al manual de referencia de PHP, que tiene un capitulo especifico dedicado al tema...
Manual de PHP - Seguridad - Seguridad en bases de datos - Inyección de SQL
El articulo es largo, pero muy bien escrito. Pero...
Posdata: Solo escapar los datos recibidos no resuelve el problema. Esa función apunta a impedir que los datos insertados rompan la sintaxis de la SQL original, pero no evitará que haya sql-injection.
Entiendo que antes de hacer una consulta a la base, se deben validar y escapar adecuadamente los datos.
Según el manual una injeccion sql es una técnica donde un atacante crea o altera comandos SQL existentes para exponer datos.
Si como tu mismo indicas mysqli_real_escape_string impide que se rompa la sintaxis sql, pude ser suficiente (pienso). Es verdad que para prevenir el mismo manual nos indica que se establezca el conjunto de caracteres de la conexión ya que se utilizará este conjunto de caracteres para escapar la cadena. Pero esto en si mismo entiendo que hace más robusta la función, ya que se escapan los datos con el juego de caracteres de la bd.
En el manual también encontramos
Cita: Esta función siempre debe usarse (con pocas excepciones) para hacer seguros los datos antes de enviar una consulta a MySQL.]Esta función siempre debe usarse (con pocas excepciones) para hacer seguros los datos antes de enviar una consulta a MySQL.
He buscado sobre como hacer injeccion cuadro se utiliza mysqli_real_escape_string, pero no e logrado encontrar nada, con esto no pretendo decir que sea imposible.
Mi cuestión es ¿ por qué es inseguro usar solamente mysqli_real_escape_string ? ¿ o en que aspecto puede ser vulnerable una sentencia en la que se escapan los tados con mysqli_real_escape_string ?
Gracias, por la ilustración maestro.