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;
-
Ignore body when the key is 'Content/type' and the value is 'multipart/form-data': ignora el body si el
Content/type
tiene el valormultipart/form-data
, pudiendo así ignorar posibles expresiones reservadas por el SQL que estén contenidas en archivos enviados de esta forma.
-
-
Headers: aplica protección a todos los headers, comprobando cada una por separado.
-
Query Params: comprueba cada parámetro buscando un ataque.
-
Cookies: aplica protección a todas las cookies, comprobando cada una de ellas por separado.
-
Path Params: comprueba cada parámetro buscando un ataque.
Cuando se inserta en el flujo de respuesta, hay dos opciones:
-
Body: aplica protección al cuerpo de la respuesta.
-
Ignore body when the key is 'Content/type' and the value is 'multipart/form-data': ignora el body si el
Content/type
tiene el valormultipart/form-data
, pudiendo así ignorar posibles expresiones reservadas por el SQL que estén contenidas en archivos enviados de esta forma.
-
-
Headers: aplica protección a todos los headers, comprobando cada una por separado.
Si se seleccionan todas las opciones, las validaciones se harán en la siguiente secuencia:
|
Los flujos de petición y respuesta permiten expresiones para ser ignoradas por el interceptor, esto evita que la llamada se interrumpa cuando hay palabras o caracteres reservados, pero dentro de un contexto seguro. Para agregar una expresión, escríbala en el campo String y haga clic en ADD, será ignorada en todos los bloques elegidos anteriormente, tenga en cuenta que es case-sensitive por lo que distingue entre mayúsculas y minúsculas.
Cada expresión agregada aumenta el tiempo de procesamiento y, así, la latencia de la solicitud, especialmente si se está validando más de un bloque. |
Sugerimos tener cuidado con las expresiones que se agregan, especialmente si coloca algo muy amplio, ya que puede dejar de validar una palabra reservada del SQL. |
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]