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.

json threat save

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

json threat skip

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:

json threat flow

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

Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]