Inyección SQL

Post date: Feb 6, 2011 1:14:01 PM

Técnica de inyección de código que aprovecha una vulnerabilidad de seguridad que ocurre en la capa de base de datos de una aplicación debido a deficiencias en la verificación de los datos aportados por los usuarios.

Supongamos que la aplicación realiza una búsqueda de hoteles en una cierta ciudad con la siguiente consulta de MySQL:

SELECT * FROM hoteles WHERE ciudad = 'Valencia';

El nombre de la ciudad es adquirido a través de un formulario de una página web cuyos datos no son verificados. Un atacante puede introducir los datos siguientes como nombre de ciudad:

Valencia'; --

Al usar los dos guiones, se obtiene una frase válida que termina en un comentario hasta el final de la línea. También puede introducir por ejemplo:

Valencia'; DROP TABLE hoteles;--

Con esta entrada, el atacante logra borrar la tabla de los usuarios; el nombre de la tabla, lo obtiene por ensayo y error hasta acertar con el nombre. Para ello puede resultarle útil que el sitio muestre a sus usuarios errores explícitos cuando algo malo pasa.

Afortunadamente, es muy fácil evitar ataques del tipo inyección SQL. Simplemente se debe realizar validación de datos antes de pasar los datos a una consulta. Esta validación se puede realizar a varios niveles. Por ejemplo, muchas librerías de acceso a bases de datos proveen consultas con parámetros junto con métodos para agregar parámetros a consultas que realizan esta verificación.

Sin embargo, la mayoría de los programadores utilizan simplemente una operación de concatenación de cadenas de caracteres entre la consulta que desean realizar y la entrada del usuario. Muestra de ello fue el reciente ataque contra más de cien mil página que incluyeron sitios como The Wall Street Journal, TomTom, y la policía de ciertas ciudades de Inglaterra.

Enlaces relacionados

Traducciones

Idioma

inglés

Sinónimos

SQL injection

Definición

A code injection technique that exploits a security vulnerability occurring in the database layer of an application.

Fuente de la traducción: Omegawiki