JSON Threat Protection
JSON Threat Protection é um interceptor que valida o conteúdo de um JSON com base em quantidade de caracteres, profundidade e número de elementos para vários componentes. Isso evita com que ataques maliciosos com valores ilegítimos sejam bem-sucedidos.
Para configurar o interceptor, temos que preencher os números de validação, conforme a imagem abaixo. Na sequência, você pode ler a respeito de cada um dos campos.
 
Campos
Container depth
Especifica a profundidade de um objeto.
Exemplo de um JSON com profundidade 3:
  {
    "name": "Sensedia",
    "city": {
      "name": "Campinas",
      "uf": {
        "name": "SP"
      }
    }
  }Object entry count
Especifica a quantidade de atributos em um objeto.
Exemplo de um JSON com 4 atributos:
{
  "city": {
    "name": "Campinas",
    "uf": "SP",
    "foundation": 1774,
    "population": 1204073
  }
}Object Entry name length
Especifica a quantidade de caracteres de um atributo.
Neste exemplo, a quantidade é de 4 caracteres:
{"city":"Campinas"}Array element count
Especifica a quantidade de elementos dentro de um array.
Exemplo de array com 6 elementos:
{
  "years": [
    2000,
    2001,
    2002,
    2003,
    2004,
    2005
  ]
}String value length
Especifica a quantidade de caracteres do valor de qualquer atributo.
Neste exemplo, a quantidade é de 8 caracteres:
{"city":"Campinas"}Skip response if fail

Dá a opção de pular a resposta no caso de falha. Quando essa opção estiver marcada, caso aconteça algum erro nas validações anteriores, o gateway não irá encaminhar a requisição para o backend, devolvendo-a imediatamente para o cliente. Essa opção será necessária quando o interceptor JSON Threat Protection estiver configurado ao mesmo tempo no fluxo de requisição e de resposta, evitando, assim, conflitos de validação.
Observações
- 
Caso todos as propriedades do interceptor sejam preenchidos, a primeira validação que o gateway encontrar terá sua exceção disparada. 
- 
Quando quiser que a propriedade não seja validada, basta não preenchê-la (deixando o campo em branco). 
- 
Lembre-se que pelo menos uma das propriedades deve ser preenchida. 
- 
Por padrão REST, para as chamadas POST e PUT é necessário informar o HTTP header Content-type: application/json. Caso contrário, será retornado um erro "HTTP 415: Unsupported Media Type".
Fluxo
O interceptor poder ser inserido tanto no fluxo de requisição quanto no de resposta, conforme mostra a imagem abaixo:
 
Erros
Abaixo temos os erros que podem ser retornados quando o interceptor encontra uma irregularidade.
| Título | Erro | Cód. HTTP - Requisição | Cód. HTTP - Resposta | 
|---|---|---|---|
| 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]