Tecnología

Inicio

¿Qué es una inyección de SQL?

¿Qué es una inyección de SQL?


Una inyección SQL es un ataque malicioso en una base de datos informática, por el que un atacante inserciones, o se inyecta, una consulta SQL - una petición formal a la base de datos - en una cadena que finalmente se ejecuta la base de datos, a través de los datos que entra en un programa de ordenador. Si tiene éxito, una inyección de SQL puede extraer información confidencial de la base de datos, insertar, actualizar o eliminar datos, o incluso apagar el sistema de gestión de base de datos.

SQL dinámico

inyección SQL se aprovecha de una técnica de programación conocido como "SQL dinámico". El texto completo de una sentencia de SQL dinámico, o de mando, se desconoce cuando se compila un programa, sino que se construye, de forma dinámica, a partir de los datos introducidos por el usuario cuando se ejecuta el programa. Un atacante termina el comando construida antes de tiempo y agrega un nuevo comando, terminado con una marca de comentario, como "-", por lo que cualquier texto que sigue se tiene en cuenta en el momento de la ejecución. En una forma ligeramente más sofisticada de la inyección de SQL, un atacante inyecta código malicioso en los datos que se almacena en la base de datos; cuando los datos almacenados se recupera y se utiliza para construir una instrucción SQL dinámico, se ejecuta el código malicioso.

efectos

Exactamente lo que los atacantes pueden lograr mediante la inyección de SQL depende de su imaginación y habilidad, pero las consecuencias típicas de una inyección SQL son la pérdida de confidencialidad, pérdida de la integridad de los datos y los problemas relacionados con la autenticación o autorización de los usuarios de bases de datos. Si la información de autorización se lleva a cabo en la propia base de datos, una inyección de SQL puede extraer la información, o modificarla, de modo que los usuarios no autorizados pueden conectarse a la base de datos.

Plataformas afectadas

la inyección de SQL, obviamente, se aplica el SQL, el lenguaje de consulta de base de datos más común, pero cualquier plataforma que requiere la interacción con una base de datos SQL se puede ver afectada. vulnerabilidades de inyección SQL son fáciles de detectar y fácil de explotar, lo que ha supuesto que la inyección de SQL se ha convertido en un problema común con los paquetes de software de bases de datos y sitios web con bases de datos.

Validación

Si un ataque inyecta código SQL malicioso que se ejecuta sin errores, no hay manera de detectar la inyección de SQL desde dentro de un programa de ordenador. Por lo tanto, los programadores de bases de datos deben revisar todo el código de programa que construye sentencias de SQL dinámico y validar todos los datos del usuario, sin hacer ninguna suposición sobre el tamaño, contenido o el tipo de los datos. Un atacante puede incrustar deliberadamente una "DROP TABLE" declaración, o alguna otra declaración, igualmente malicioso en un campo de texto, por lo que los programadores deben asegurarse de que los programas se comportan adecuadamente en tales circunstancias.