SQL Threat Protection
Este interceptor tiene la función de bloquear ataques de inyección SQL (SQL Injection) en la llamada a una API que accede a una base de datos.
Cómo funciona
El interceptor funciona en base a una expresión regular (regex) que valida el contenido de body, headers, cookies, query params y path params pasados en la petición. Si la regex encuentra fragmentos que puedan indicar una inyección SQL, la llamada se aborta y se devuelve un error (ver posibles errores más abajo).
Para reforzar la seguridad, hemos hecho la regex más restrictiva a partir de la versión 4.4.0.0 de la Plataforma. Si antes utilizaba SQL Threat Protection en sus APIs, es posible que experimente problemas de tráfico de algunos datos que antes no tenían restricciones. Por ejemplo, si se envía una cadena que contiene una palabra clave y un complemento, el interceptor identifica una amenaza y aborta la petición. En este caso, puede cambiar la forma en que viajan los datos dividiendo la cadena en diferentes pares clave-valor. |
Preste atención al envío de imágenes en form-data. En estos casos, el cuerpo se recibe como un array de bytes y, al descodificar, es posible que algunos caracteres se entiendan como inyección SQL y se aborte la llamada. Para evitarlo, puede enviar la imagen convertida a Base64, como en este cuerpo de ejemplo:
|
Configuración
Aunque el interceptor SQL Threat Protection también se puede insertar en el flujo de respuesta (response) de una API, es esencial que esté en el flujo de petición (request), ya que los ataques mencionados ocurren en la dirección del cliente → servidor.
Para configurar el interceptor, simplemente elija al menos una de las opciones de bloque para proteger. Cuando se introduce en el flujo de petición, las opciones son las siguientes:
-
Body: aplica protección al cuerpo de la petición;
-
Headers: aplica protección a todos los headers, comprobando cada una por separado;
-
Query Params: comprueba parámetro por parámetro buscando un ataque;
-
Cookies: aplica protección a todas las cookies, comprobando cada una de ellas por separado;
-
Path Params: Comprueba parámetro por parámetro buscando un ataque.
Cuando se inserta también en el flujo de respuesta, hay otras dos opciones:
-
Body: aplica protección al cuerpo de la respuesta;
-
Headers: Aplica protección a todos los headers, comprobando cada una por separado.
Si se seleccionan todas las opciones, las validaciones tomarán la siguiente secuencia:
-
Petición: Query Params, Body, Headers, Cookies, Path Params.
-
Respuesta: Body, Headers.
Errores
Si se identifica algún ataque de inyección, se devuelven los siguientes errores:
Campos | Error | Cód. HTTP Request | Cód. HTTP Response |
---|---|---|---|
Body |
SQL Injection attack identified in this API Body |
400 |
500 |
Headers |
SQL Injection attack identified in this API Headers |
400 |
500 |
Query Params |
SQL Injection attack identified in this API Query Params |
400 |
- |
Cookies |
SQL Injection attack identified in this API Cookies |
400 |
- |
Path Params |
SQL Injection attack identified in this API Path Params |
400 |
- |
Share your suggestions with us!
Click here and then [+ Submit idea]