¿Qué es un ataque de inyección SQL / Vulnerabilidad?
Este FAQ respuesta fue escrito por k4thryn:
Una vulnerabilidad de inyección SQL puede producirse cuando un programa mal escrito el usuario utiliza los datos proporcionados en una base de datos de consulta sin la validación de la entrada. Esto es más a menudo se encuentran en páginas web con contenido dinámico. Hay excelentes tutoriales y artículos descriptivos sobre este tema, así como muchos anuncios de vulnerabilidad para diferentes aplicaciones de la plena revelación sitios web.
Un simple ejemplo de la inyección de SQL es una forma básica en HTML de inicio de sesión en la que usted proporciona un nombre de usuario y contraseña:
<form method="post" action="process_login.php"> <input type="text" name="username"> <input type="password" name="password"> </ form>
Habida cuenta de este fragmento de HTML, se puede deducir que los más fáciles (y peores) para la secuencia de comandos "process_login.php" a trabajar para él sería para construir y ejecutar una consulta de base de datos que tiene este aspecto:
"SELECT id De inicios de sesión Cuando el nombre de usuario = '$ nombre_usuario' y la contraseña = '$ password' ";
En estas circunstancias, si las variables "$ usuario" y "contraseña $" son tomadas directamente de la entrada del usuario, el script de inicio de sesión puede ser fácilmente engañado a creer que una contraseña válida ha sido facilitada por jugar con la sintaxis de la sentencia SQL. Supongamos la siguiente serie de caracteres se presentaron como la contraseña:
'O''='
y nos dio "bob" como el nombre de usuario. Una vez que las variables son interpolados, por encima de la consulta se vería así:
"SELECT id De inicios de sesión Cuando el nombre de usuario = 'bob' y la contraseña =''o''='' ";
Esta consulta devolverá una fila porque la cláusula final:
... =''o''
siempre evaluar a true (una cadena vacía es siempre igual a una cadena vacía).
Prevención de ataques de inyección de SQL
Los métodos más comunes para prevenir este tipo de inyección de SQL vunerability son el control de la entrada del usuario para caracteres peligrosos como una sola cita y el uso de preparados, la base de datos que dicen exactamente lo que debe esperar antes de que el usuario ha facilitado datos se pasa a la misma.
|






