Política JSONThreatProtection

Esta página se aplica à Apigee e à Apigee híbrida.

Confira a documentação da Apigee Edge.

Ícone da política

Conteúdo

Minimize os riscos apresentados por ataques no nível de conteúdo, permitindo que você especifique limites em várias estruturas JSON, como matrizes e strings.

Esta é uma política extensível. O uso dela pode ter implicações no custo ou na utilização, dependendo da sua licença da Apigee. Para informações sobre tipos de política e implicações de uso, consulte Tipos de política.

Vídeo: assista a um breve vídeo para saber mais sobre como a política JSONThreatProtection permite que você proteja APIs contra ataques no nível do conteúdo.

Vídeo: confira este vídeo curto sobre a plataforma de API entre nuvens da Apigee.

Referência de elemento

A referência do elemento descreve os elementos e atributos da política JSONThreatProtection.

<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
   <DisplayName>JSONThreatProtection 1</DisplayName>
   <ArrayElementCount>20</ArrayElementCount>
   <ContainerDepth>10</ContainerDepth>
   <ObjectEntryCount>15</ObjectEntryCount>
   <ObjectEntryNameLength>50</ObjectEntryNameLength>
   <Source>request</Source>
   <StringValueLength>500</StringValueLength>
</JSONThreatProtection>

Atributos <JSONThreaProtection>

<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> 

A tabela a seguir descreve atributos comuns a todos os elementos pai de políticas:

Atributo Descrição Padrão Presence
name

O nome interno da política. O valor do atributo name pode conter letras, números, espaços, hifens, sublinhados e pontos. Esse valor não pode exceder 255 caracteres.

Opcionalmente, use o elemento <DisplayName> para rotular a política no editor de proxy da IU de gerenciamento com um nome de linguagem natural diferente.

N/A Obrigatório
continueOnError

Defina como false para retornar um erro quando uma política falhar. Esse é o comportamento esperado na maioria das políticas.

Defina como true para que a execução do fluxo continue mesmo depois que uma política falhar. Consulte também:

false Opcional
enabled

Defina como true para aplicar a política.

Defina como false para desativar a política. A política não será aplicada mesmo se ela permanecer anexada a um fluxo.

true Opcional
async

Esse atributo está obsoleto.

false Descontinuado

Elemento <DisplayName>

Use em conjunto com o atributo name para rotular a política no editor de proxy da IU de gerenciamento com um nome de linguagem natural diferente.

<DisplayName>Policy Display Name</DisplayName>
Padrão

N/A

Se você omitir esse elemento, será usado o valor do atributo name da política.

Presence Opcional
Tipo String

Elemento <ArrayElementCount>

Especifica o número máximo de elementos permitidos em uma matriz.

<ArrayElementCount>20</ArrayElementCount>
Padrão: Se você não especificar esse elemento ou se especificar um número inteiro negativo, o sistema não aplicará um limite.
Presença: Opcional
Tipo: Número inteiro

Elemento <ContainerDepth>

Especifica a profundidade de contenção máxima permitida, em que os contêineres são objetos ou matrizes. Por exemplo, uma matriz que contém um objeto que contém um objeto resultaria em uma profundidade de contenção de 3.

<ContainerDepth>10</ContainerDepth>
Padrão: Se você não especificar esse elemento ou se especificar um número inteiro negativo, o sistema não aplicará um limite.
Presença: Opcional
Tipo: Número inteiro

Elemento <ObjectEntryCount>

Especifica o número máximo de entradas permitidas em um objeto.

<ObjectEntryCount>15</ObjectEntryCount>
Padrão: Se você não especificar esse elemento ou se especificar um número inteiro negativo, o sistema não aplicará um limite.
Presença: Opcional
Tipo: Número inteiro

Elemento <ObjectEntryNameLength>

Especifica o comprimento máximo da string permitido para um nome de propriedade em um objeto.

<ObjectEntryNameLength>50</ObjectEntryNameLength>
Padrão: Se você não especificar esse elemento ou se especificar um número inteiro negativo, o sistema não aplicará um limite.
Presença: Opcional
Tipo: Número inteiro

Elemento <Source>

Mensagem a ser analisada por ataques de payload JSON. Geralmente, isso é definido como request, porque normalmente será necessário validar as solicitações de entrada dos aplicativos cliente. Quando definido como message, esse elemento avalia automaticamente a mensagem de solicitação quando ele está anexado ao fluxo de solicitação e a mensagem de resposta quando anexado ao fluxo.

<Source>request</Source>
Padrão: solicitação
Presença: Opcional
Tipo:

String.

Valores válidos: solicitação, resposta ou mensagem.

Elemento <StringValueLong>

Especifica o comprimento máximo permitido para um valor de string.

<StringValueLength>500</StringValueLength>
Padrão: Se você não especificar esse elemento ou se especificar um número inteiro negativo, o sistema não aplicará um limite.
Presença: Opcional
Tipo: Número inteiro

Referência de erros

Nesta seção, descrevemos os códigos de falha e as mensagens de erro retornadas e as variáveis com falha definidas pela Apigee quando essa política aciona um erro. Essas informações são importantes para saber se você está desenvolvendo regras de falha para lidar com falhas. Para saber mais, consulte O que você precisa saber sobre erros de política e Como lidar com falhas.

Erros de execução

Esses erros podem ocorrer quando a política é executada.

Código de falha Status HTTP Causa Correção
steps.jsonthreatprotection.ExecutionFailed 500 A política JSONThreatProtection pode gerar vários tipos diferentes de erros ExecutionFailed. A maioria desses erros ocorre quando um limite específico definido na política é excedido. Esses tipos de erros incluem: tamanho do nome de entrada do objeto, contagem de entradas de objetos, contagem de elementos da matriz, profundidade do contêiner e tamanho do valor da string. Esse erro também ocorre quando o payload contém um objeto JSON inválido.
steps.jsonthreatprotection.SourceUnavailable 500 Esse erro ocorrerá se a variável message especificada no elemento <Source> for:
  • Fora do escopo (não disponível no fluxo específico em que a política está sendo executada)
  • Não for um dos valores válidos request, response ou message
steps.jsonthreatprotection.NonMessageVariable 500 Esse erro ocorrerá se o elemento <Source> estiver definido como uma variável que não é do tipo message.

Erros na implantação

Nenhum.

Variáveis de falha

Essas variáveis são definidas quando esta política aciona um erro. Para mais informações, consulte O que você precisa saber sobre erros de política.

Variáveis Onde Exemplo
fault.name="fault_name" fault_name é o nome da falha, conforme listado na tabela Erros de ambiente de execução acima. O nome da falha é a última parte do código de falha. fault.name Matches "SourceUnavailable"
jsonattack.policy_name.failed policy_name é o nome especificado pelo usuário da política que causou a falha. jsonattack.JTP-SecureRequest.failed = true

Exemplo de resposta de erro

{
  "fault": {
    "faultstring": "JSONThreatProtection[JPT-SecureRequest]: Execution failed. reason: JSONThreatProtection[JTP-SecureRequest]: Exceeded object entry name length at line 2",
    "detail": {
      "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
    }
  }
}

Exemplo de regra de falha

<FaultRule name="JSONThreatProtection Policy Faults">
    <Step>
        <Name>AM-CustomErrorResponse</Name>
        <Condition>(fault.name Matches "ExecutionFailed") </Condition>
    </Step>
    <Condition>(jsonattack.JPT-SecureRequest.failed = true) </Condition>
</FaultRule>

Esquemas

Observações sobre uso

Assim como os serviços baseados em XML, as APIs compatíveis com a notação de objeto JavaScript (JSON) são vulneráveis a ataques no nível do conteúdo. Ataques simples JSON usam a estrutura para sobrecarregar os analisadores JSON de causar falha em um serviço e induzir ataques de negação de serviço no nível do aplicativo. Todas as configurações são opcionais e precisam ser ajustadas para otimizar os requisitos de serviço contra possíveis vulnerabilidades.

Temas relacionados

Política JSONtoXML

Política XMLThreatProtection

Política RegularExpressionProtection