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
No secret to stopping XSS and SQL injection attacks, Matt Stephens, Posted in Developer, 23rd June 2010 17:02 GMT.
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