SQL es un acronimo de Structured Query Language, el cual es un lenguaje estándar de consulta estructurado para el manejo de base de datos relacionales, el mismo posee la característica de integrarse con cualquier otro lenguajes.
Los ataques mediante inyección SQL, se presentan en gran parte páginas web dinámicas, esta vulnerabilidad se presenta en la alteración del funcionamiento de las consultas mediante la modificación de los querys de consultas a la base de datos.
Veamos un ejemplo básico de estos ataques
Las páginas de acceso normalmente solicitan información del nombre de usuario y contraseña, al introducir de nombre y la contraseña nuestra consulta a la base de datos seria la siguiente:
select {campos} from {nombre_tabla} where usuario=$usuario and password=$contraseña
En esta sentencia la variable
$usuario, es el nombre de usuario proporcionado y la variable
$contraseña, representa la contraseña proporcionada por el usuario. La clausula
where realizara el filtrado en la consulta a base de datos.
Suponiendo los siguientes valores:
$usuario='admin'
$contraseña='admin'
Nuestra instrucción sql quedaria de la siguiente forma:
select {campos} from {nombre_tabla} where usuario='admin' and password='admin'
Dicha consulta nos traerá un registro con los datos del usuario admin y ahi partir a de esto se proporcionara al acceso al sistema. Si alteramos los valores de las variables por los siguientes:
$usuario='admin'
$contraseña=' ‘ or ‘1′=’1'
Esta consulta nos devuelve registros con lo que el usuario entrará en nuestra Web sin tener permiso. Por otro lado puede ser que el usuario utilice estos trucos de inyección de SQL para ejecutar código arbitrario en nuestro servidor.
Medidas para evitar la inyección SQL- Se deberá limitar los permiso de los usuarios para la ejecución de sentencias. Por ejemplo utilizando un usuario distinto para las sentencias SELECT, DELETE, UPDATE.
- Filtrar el valor de las variables reemplazando la aparición de ‘ por ‘’ (dos comillas simples).
- Utilice procedimientos almacenados para el manejo de la base de datos .
Link de InteresGuía rápida de inyecciones en bases de datos Mysql (Sql injection)Inyección de código SQLIntroducción a SQL Injection (Inyección SQL)