Utilice declaraciones preparadas con consultas parametrizadas

Este método de desinfectar las entradas de la base de datos obliga a los desarrolladores a definir todo el código SQL primero y luego pasar solo los parámetros específicos de la consulta SQL: los datos ingresados ​​tienen un alcance explícito limitado que el que tiene. No puedes exceder. Esto permite que la base de datos distinga entre los datos que se ingresan y el código que se debe ejecutar, independientemente del tipo de datos suministrados en el campo de entrada. Algunas bibliotecas de mapeo relacional de objetos se usan comúnmente para este propósito porque algunas versiones limpian automáticamente las entradas de la base de datos.

Escape de todas las entradas proporcionadas por el usuario

Al escribir en lenguaje SQL, ciertos caracteres o palabras tienen significados especiales. Por ejemplo, el carácter “*” significa “todos”. Para evitar que los usuarios ingresen accidental o maliciosamente estos caracteres en una solicitud de API a la base de datos, se pueden escapar los datos proporcionados por el usuario. Escapar un carácter es una forma de decirle a la base de datos que no lo analice como un comando o condición, sino que lo trate como una entrada literal.

Usar procedimientos almacenados

Si bien no es una estrategia de seguridad sólida en sí misma, los procedimientos almacenados pueden ayudar a mitigar el riesgo asociado con la inyección de SQL. Al limitar correctamente los permisos de la cuenta de la base de datos que ejecuta consultas SQL, incluso el código de aplicación no robusto que es vulnerable a la inyección de SQL no tendrá los permisos necesarios para manipular tablas que no sean de la base de datos. vinculado. Los procedimientos almacenados también pueden verificar el tipo de parámetros de entrada, evitando la entrada de datos que no coincidan con el tipo que se supone que debe recibir el campo. En los casos en que las consultas estáticas son insuficientes, generalmente se deben evitar los procedimientos almacenados.

Aplicar el principio de privilegio mínimo

Como regla general, en cualquier caso donde un sitio web necesite utilizar SQL dinámico, es importante reducir la exposición a la inyección de SQL limitando los permisos al ámbito más estrecho posible para ejecutar la consulta afectada. En su forma más obvia, esto significa que bajo ninguna circunstancia una cuenta administrativa debe ejecutar comandos SQL como resultado de una llamada a la API de una solicitud no autorizada. Si bien los procedimientos almacenados se utilizan mejor para consultas estáticas, la aplicación del principio de privilegio mínimo puede ayudar a reducir el riesgo de consultas SQL dinámicas.

Más allá de todas estas recomendaciones, existen herramientas que puede utilizar para protegerse. A menudo desarrolladas por empresas especializadas como Cloud Protector, estas herramientas te serán muy útiles para detectar ataques antes de que te afecten. Para descubrir una descripción general de estas herramientas, puede navegar por la red o ir a las páginas dedicadas de empresas profesionales del sector.

Leave a Reply