JSON Threat Protection
JSON Threat Protection es un interceptor que valida el contenido de un JSON basado en la longitud, profundidad y número de elementos de varios componentes. Esto evita que ataques maliciosos con valores ilegítimos tengan éxito.
Para configurar el interceptor, tenemos que llenar algunas propiedades, conforme la a imagen de abajo. En la secuencia, usted puede leer acerca de cada uno de los campos.
Campos
Container depth
Especifica la profundidad de un objeto.
Ejemplo de un JSON con profundidad 3:
{
"name": "Sensedia",
"city": {
"name": "Campinas",
"uf": {
"name": "SP"
}
}
}
Object entry count
Especifica el número de atributos de un objeto.
Ejemplo de un JSON con 4 atributos:
{
"city": {
"name": "Campinas",
"uf": "SP",
"foundation": 1774,
"population": 1204073
}
}
Object Entry name length
Especifica la cantidad de caracteres de un atributo.
En este ejemplo, la cantidad es 4 caracteres:
{"city":"Campinas"}
Array element count
Especifica la cantidad de elementos dentro un array.
Ejemplo de array con 6 elementos:
{
"years": [
2000,
2001,
2002,
2003,
2004,
2005
]
}
String value length
Especifica la cantidad de caracteres del valor de cualquier atributo.
En este ejemplo, la cantidad es 8 caracteres:
{"city":"Campinas"}
Skip response if fail
Especifica si se debe ignorar la respuesta en caso de fallo. Cuando esta opción esté marcada, en el caso que ocurra algún error en las validaciones anteriores, puerta de enlace no enviará la petición para el backend, sino la devolverá inmediatamente para el cliente. Esta opción será necesaria cuando el interceptor JSON Threat Protection esté configurado en el flujo de petición (request) y de respuesta (response) simultáneamente, evitando, así, conflictos de validación.
Observaciones
-
En el caso que todas las propiedades del interceptor sean llenadas, la primera validación que el gateway encuentre tendrá su excepción disparada.
-
Cuando quiera que la propiedad no sea validada, basta no llenarla, dejando el campo en blanco.
-
Recuerde que por lo menos una de las propiedades debe ser llenada.
-
Por defecto REST, para las operaciones POST y PUT es necesario informar el header
Content-type: application/json
. De lo contrario, se devuelve un error «HTTP 415: Unsupported Media Type».
Flujo
El interceptor poder ser insertado tanto en el flujo de petición como de respuesta, conforme muestra la imagen a continuación:
Errores
A continuación, tenemos los errores que pueden ser retornados cuando el interceptor encuentra una irregularidad.
Título | Error | Cód. HTTP - Request | Cód. HTTP - Response |
---|---|---|---|
JSON |
Json format invalid |
400 |
500 |
Container depth |
Container depth limit exceeds the maximum allowed for this API (10) |
400 |
500 |
Object entry count |
Object entry count limit exceeds the maximum allowed for this API (10) |
400 |
500 |
Object Entry name length |
Object entry name length limit exceeds the maximum allowed for this API (10) |
400 |
500 |
Array element count |
Array element count limit exceeds the maximum allowed for this API (30) |
400 |
500 |
String value length |
String value length limit exceeds the maximum allowed for this API (30) |
400 |
500 |
Invalid Content-Type |
JSON threat protection validation failed: Invalid Content-Type in Header → (Content type) |
415 |
415 |
Content-Type not found |
JSON threat protection validation failed: Content-Type not found in Header |
415 |
415 |
Share your suggestions with us!
Click here and then [+ Submit idea]