Sé que la inyección SQL se puede desinfectar usando
mysql_real_escape_string();
pero cómo sanear la inyección de SQL ciego y en qué se diferencia de la inyección de SQL normal.
Sé que la inyección SQL se puede desinfectar usando
mysql_real_escape_string();
pero cómo sanear la inyección de SQL ciego y en qué se diferencia de la inyección de SQL normal.
La inyección ciega de SQL y la inyección "normal" de SQL son inyecciones de SQL, es decir, el atacante puede modificar la declaración de SQL enviada a la base de datos. La única diferencia es que con la inyección ciega de SQL, el atacante no ve ningún resultado obvio (es decir, los datos devueltos por la base de datos), pero solo puede deducir de la sincronización, los mensajes de error o algo similar a lo que sucedió en la base de datos. Consulte OWASP para obtener más información.
Debido a que la causa de la inyección ciega de SQL y la inyección "normal" de SQL es la misma prevención, también lo es la prevención, es decir, asegúrese de que el atacante no pueda modificar el SQL de manera malintencionada. La forma preferida de hacer esto es vincular los parámetros y no escapar (es decir, mysql_real_escape_string
). Para obtener más información sobre cómo hacerlo correctamente, consulte Bobby Tables: una guía para prevenir la inyección de SQL que describe los problemas y también tiene soluciones en varios lenguajes como para PHP .
¡Usando consultas parametrizadas! enlace enlace
De esa manera, usted tampoco siempre tiene que preocuparse por escapar todo siempre cada vez, en cada consulta.
También me gustaría mencionar que mysql_real_escape_string();
está desactualizado.
mysqli_real_escape_string();
Es la versión actual soportada.
Lea otras preguntas en las etiquetas web-application sql-injection