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.

json threat save

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

json threat skip

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:

json threat flow

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

Thanks for your feedback!
EDIT
How useful was this article to you?