Aplicar el acceso de mínimo privilegio, sanear las entradas de los usuarios y restringir los procedimientos de las bases de datos puede ayudar a evitar la inyección de código SQL y la posterior fuga de datos.
Después de leer este artículo podrás:
Contenido relacionado
¿Qué es la inyección de código SQL?
¿Qué es una API?
¿Cómo funcionan las API?
¿Qué es la seguridad de la API?
¿Seguridad de aplicaciones web?
Suscríbete a theNET, el resumen mensual de Cloudflare sobre las ideas más populares de Internet.
Copiar el enlace del artículo
La inyección de lenguaje de consulta estructurada (SQLi) es un ataque de inyección de código que permite al atacante recuperar, manipular o destruir información confidencial ubicada en bases de datos SQL. Estos ataques funcionan al insertar comandos especializados en campos de consulta SQL. Cuando se ejecutan, los comandos pueden permitir al atacante suplantar la identidad de usuarios legítimos, ver o recuperar datos protegidos e incluso obtener acceso root a servidores.
A menudo, los atacantes llevan a cabo SQLi al aprovechar vulnerabilidades en las interfaces de programación de aplicaciones (API) que no pueden diferenciar adecuadamente entre código legítimo y no fiable. Sin la capacidad de detectar comandos o consultas alterados, estas API pueden utilizarse para ejecutar solicitudes maliciosas, como eludir el firewall de aplicación web (WAF) o las medidas de autenticación.
Normalmente, el SQLi se realiza al usar uno de estos tres métodos:
Para ver ejemplos reales de consultas de SQL benignas y maliciosas, lee ¿Qué es la inyección de código SQL?
Aunque la inyección de código SQL es una de las amenazas más frecuentes de API, puede evitarse eficazmente con las estrategias de prevención adecuadas. Algunos métodos útiles para evitar la inyección de código SQL incluyen restringir los procedimientos de la base de datos, sanear las entradas de la base de datos y aplicar el acceso con menos privilegios.
La inyección de código SQL depende en gran medida de la capacidad de un atacante para manipular las entradas de datos y funciones de la base de datos. Al restringir estas entradas y limitar el tipo de procedimientos de base de datos que se pueden realizar, las organizaciones pueden minimizar el riesgo de consultas no autorizadas o maliciosas. Las formas de hacerlo incluyen:
Las entradas de usuario en cualquier base de datos SQL se deben supervisar, validar y sanear periódicamente para eliminar el código malicioso. La validación de la entrada garantiza que los datos se inspeccionen y formateen correctamente según criterios predeterminados, mientras que el saneamiento de la entrada modifica (o "sanea") la entrada al eliminar los caracteres no válidos o no seguros y al reformatearla según sea necesario. Entre las formas en que pude garantizarse la validación de las entradas están:
El acceso con menos privilegios es el principio de dar a los usuarios únicamente el acceso necesario a los recursos protegidos que requiera su función. Por ejemplo, esto puede significar limitar el número de usuarios a los que se conceden privilegios de nivel administrador a una base de datos o incluso dar a los usuarios un acceso temporal de nivel administrador que pueda revocarse posteriormente.
Restringir el acceso de los usuarios a un nivel basado en funciones también ayuda a minimizar el impacto de una violación, ya que los atacantes que accedan a una base de datos mediante credenciales robadas verán igualmente limitada su capacidad de ver, modificar, robar o destruir datos protegidos. Por el misma motivo, las organizaciones deben limitar el acceso compartido a las bases de datos en varios sitios web y aplicaciones.
Cloudflare ayuda a las organizaciones a mejorar su resiliencia frente a los ataques SQLi gracias a una eficaz cartera de soluciones de seguridad de las aplicaciones y las API: