He estado leyendo acerca de los ataques de inyección SQL y cómo evitarlos, aunque parece que nunca puedo hacer que los ejemplos "horribles" que se ofrecen funcionen, p. see this post.¿La inyección SQL es un riesgo hoy en día?
Creé un archivo PHP y una tabla en la base de datos, tuve un valor pasado a través de $_GET
e intenté eliminar la tabla haciendo bob'); drop table students; --
y no funcionó. PHP escapa automáticamente del \'
y la consulta tiene un error, no hay daño. Mismo problema cuando se trata de replicar de inicio de sesión "ataques" como AND WHERE 1=1
etc.
ejemplo:
<?php
$id = $_GET['id'];
$sql = "INSERT INTO Users (Username) VALUES ($id)";
echo $sql;
mysql_query($sql) or die(mysql_error());
Y me gustaría pasar sql.php?id=1); delete from Users; --
Entonces esto es algo anticuado que utiliza para aplicar en el días de PHP3 o algo así, y hoy en día, incluso los principiantes están protegidos de cosas como citas mágicas?
Estoy usando PHP5 en Ubuntu.
Su pregunta sigue siendo muy relevante. Deberías ver las respuestas en alguna publicación de la etiqueta PHP. Por ejemplo, esto: http://stackoverflow.com/a/11908119/220060 - surgen una y otra vez. Tal vez con estos escáneres automáticos de vulnerabilidad, mueran como moscas. Me encontré con el primero exitoso de 2010. La página de inicio de nuestra empresa fue pirateada minutos después del ataque. – nalply
@ tereško No creo que sea un duplicado exacto. Esa pregunta es preguntar * cómo * prevenir las inyecciones. Esta pregunta es: * por qué * las citas mágicas no son formas aceptables de prevenir las inyecciones. – luiscubal