Skip to main content

Inyección SQL

Inyección de lenguaje de consulta estructurado

Error relacionado

"Este servidor es vulnerable a un ataque de inyección SQL. Asegúrese de que la consulta SQL de entrada esté validada".

Problema

Un ataque de inyección SQL es un tipo de vulnerabilidad en el código de los sitios y aplicaciones web. Esta vulnerabilidad permite a un atacante secuestrar los procesos de back-end e interferir en las consultas que una aplicación hace a su base de datos.

Los ataques de inyección SQL se producen cuando los datos entran en un programa desde una fuente no fiable. Los datos se utilizan entonces para construir dinámicamente una consulta SQL.

Cuando los ataques de inyección SQL tienen éxito, los atacantes pueden:

  • Entrar en una aplicación o en el front-end de un sitio web sin contraseña.

  • Acceder, modificar y eliminar datos almacenados en bases de datos seguras.

  • Crear sus propios registros de la base de datos o modificar los existentes, allanando el camino para más ataques.

Solución

Prevenir los ataques por inyección de código SQL:

  1. Utilizar declaraciones preparadas (con consultas parametrizadas) para asegurarse de que los parámetros (entradas) que se pasan a las sentencias SQL se manejan de forma segura.

  2. Permitir la validación de los datos de entrada (no bloquearlos). No filtrar la entrada del usuario basándose en listas de bloqueo. Los atacantes casi siempre encuentran una manera de eludir su lista. Si es posible, verifique y filtre la entrada del usuario utilizando únicamente listas de permisos estrictas.

  3. Escapar los caracteres especiales de los parámetros de entrada cuando las consultas parametrizadas y la validación de los datos de entrada no sean posibles.

  4. Aplicar el principio del mínimo privilegio, reforzando los controles de acceso a su sitio web para reducir las amenazas a la seguridad.

    • Utilice el conjunto mínimo de privilegios en sus sistemas para realizar una acción.

    • Otorgue privilegios solo durante el tiempo que se necesite la acción.

    • No conceda derechos de acceso de administrador a las cuentas de aplicaciones.

    • Minimice los privilegios de cada cuenta de base de datos en su entorno.