Componentes da solicitação no AWS WAF
Esta seção descreve os componentes da solicitação da web que você pode especificar para inspeção. Você especifica o componente de solicitação para instruções de regra de correspondência que procuram padrões dentro da solicitação da web. Esses tipos de instruções incluem correspondência de string, padrão regex, ataque de injeção de SQL e instruções de restrição de tamanho. Para obter informações sobre como usar essas configurações de componentes de solicitação, consulte as instruções de regras individuais em Como usar instruções de regra de correspondência no AWS WAF
Salvo indicação em contrário, se uma solicitação da web não tiver o componente de solicitação especificado na instrução da regra, a solicitação será avaliada pelo AWS WAF como não correspondendo aos critérios da regra.
nota
Especifique um único componente de solicitação para cada instrução de regra que o exija. Para inspecionar mais de um componente de uma solicitação, crie uma instrução de regra para cada componente.
A documentação do console e da API do AWS WAF fornece orientações para essas configurações de componente de solicitação nos seguintes locais:
-
Construtor de regras no console:Nas configurações de Instrução de um tipo de regra comum, escolha o componente que você deseja inspecionar na caixa de diálogo Inspecionar em Solicitar componentes.
-
Conteúdo da instrução da API:
FieldToMatch
O restante desta seção descreve as opções da parte da solicitação da web a inspecionar.
Tópicos
Método HTTP
Inspectiona o método HTTP para a solicitação. O método HTTP indica o tipo de operação que a solicitação da Web está solicitando que seu recurso protegido realize, como POST
ou GET
.
Cabeçalho único
Inspeciona um único cabeçalho nomeado na solicitação.
Para essa opção, você especifica o nome do cabeçalho, por exemplo, User-Agent
ou Referer
. A correspondência de string para o nome não diferencia maiúsculas de minúsculas.
Todos os cabeçalhos
Inspeciona todos os cabeçalhos da solicitação, incluindo cookies. É possível aplicar um filtro para inspecionar um subconjunto de todos os cabeçalhos.
Para essa opção, você fornece as seguintes especificações:
-
Padrões de correspondência:O filtro a ser usado para obter um subconjunto de cabeçalhos para inspeção. O AWS WAF procura esses padrões nas teclas dos cabeçalhos.
A configuração de padrões de correspondência pode ser uma das seguintes:
-
Tudo:Corresponder todas as teclas. Avalie os critérios de inspeção de regras para todos os cabeçalhos.
-
Cabeçalhos excluídos:Inspeciona apenas os cabeçalhos cujas chaves não correspondem a nenhuma das strings especificadas aqui. A correspondência de string para uma chave não diferencia maiúsculas de minúsculas.
-
Cabeçalhos incluídos:Inspeciona apenas os cabeçalhos que têm uma chave que corresponda a uma das strings especificadas aqui. A correspondência de string para uma chave não diferencia maiúsculas de minúsculas.
-
-
Escopo de correspondência:As partes dos cabeçalhos que o AWS WAF deve inspecionar com os critérios de inspeção de regras. Você pode especificar chaves, valores ou tudo para inspecionar as chaves e os valores em busca de uma correspondência.
Tudo não exige que uma correspondência seja encontrada nas chaves e que uma correspondência seja encontrada nos valores. Isso requer que uma correspondência seja encontrada nas chaves, nos valores ou nos dois. Para exigir uma correspondência nas chaves e nos valores, use uma instrução lógica
AND
para combinar duas regras de correspondência, uma que inspeciona as chaves e outra que inspeciona os valores. -
Tratamento de tamanho grande:Como o AWS WAF deve lidar com solicitações que têm dados de cabeçalho maiores do que os que podem ser inspecionados pelo AWS WAF. O AWS WAF pode inspecionar no máximo os primeiros 8 KB (8.192 bytes) dos cabeçalhos da solicitação e, no máximo, os primeiros 200 cabeçalhos. O conteúdo está disponível para inspeção pelo AWS WAF até o primeiro limite atingido. Você pode optar por continuar a inspeção ou pular a inspeção e marcar a solicitação como compatível ou não com a regra. Para obter mais informações sobre como processar conteúdo de tamanho acima do limite, consulte Como tratar componentes de solicitação da web de tamanho grande no AWS WAF.
Ordem de cabeçalho
Inspecione uma string contendo a lista dos nomes dos cabeçalhos da solicitação, ordenados conforme aparecem na solicitação da web que o AWS WAF recebe para inspeção. O AWS WAF gera a string e, em seguida, a usa como campo para corresponder o componente em sua inspeção. O AWS WAF separa os nomes dos cabeçalhos na string com dois pontos e sem espaços adicionados, por exemplo host:user-agent:accept:authorization:referer
.
Para essa opção, você fornece as seguintes especificações:
-
Tratamento de tamanho grande:Como o AWS WAF deve lidar com solicitações que têm dados de cabeçalho mais numerosos ou maiores do que os que podem ser inspecionados pelo AWS WAF. O AWS WAF pode inspecionar no máximo os primeiros 8 KB (8.192 bytes) dos cabeçalhos da solicitação e, no máximo, os primeiros 200 cabeçalhos. O conteúdo está disponível para inspeção pelo AWS WAF até o primeiro limite atingido. Você pode optar por continuar a inspeção dos cabeçalhos que estão disponíveis ou pular a inspeção e marcar a solicitação como compatível ou não com a regra. Para obter mais informações sobre como processar conteúdo de tamanho acima do limite, consulte Como tratar componentes de solicitação da web de tamanho grande no AWS WAF.
Cookies
Inspeciona todos os cookies de solicitação. É possível aplicar um filtro para inspecionar um subconjunto de todos os cookies.
Para essa opção, você fornece as seguintes especificações:
-
Padrões de correspondência:O filtro a ser usado para obter um subconjunto de cookies para inspeção. O AWS WAF procura esses padrões nas chaves dos cookies.
A configuração de padrões de correspondência pode ser uma das seguintes:
-
Tudo:Corresponder todas as teclas. Avalie os critérios de inspeção de regras para todos os cookies.
-
Cookies excluídos:Inspeciona apenas os cookies cujas chaves não correspondem a nenhuma das strings especificadas aqui. A correspondência de string para uma chave diferencia maiúsculas de minúsculas e deve ser exata.
-
Cookies incluídos:Inspeciona apenas os cookies que têm uma chave que corresponda a uma das strings especificadas aqui. A correspondência de string para uma chave diferencia maiúsculas de minúsculas e deve ser exata.
-
-
Escopo de correspondência:As partes dos cookies que o AWS WAF deve inspecionar com os critérios de inspeção de regras. Você pode especificar chaves, valores ou tudo para chaves e valores.
Tudo não exige que uma correspondência seja encontrada nas chaves e que uma correspondência seja encontrada nos valores. Isso requer que uma correspondência seja encontrada nas chaves, nos valores ou nos dois. Para exigir uma correspondência nas chaves e nos valores, use uma instrução lógica
AND
para combinar duas regras de correspondência, uma que inspeciona as chaves e outra que inspeciona os valores. -
Tratamento de tamanho grande:Como o AWS WAF deve lidar com solicitações que têm dados de cookie maiores do que os que podem ser inspecionados pelo AWS WAF. O AWS WAF pode inspecionar no máximo os primeiros 8 KB (8.192 bytes) dos cookies da solicitação e, no máximo, os primeiros 200 cookies. O conteúdo está disponível para inspeção pelo AWS WAF até o primeiro limite atingido. Você pode optar por continuar a inspeção ou pular a inspeção e marcar a solicitação como compatível ou não com a regra. Para obter mais informações sobre como processar conteúdo de tamanho acima do limite, consulte Como tratar componentes de solicitação da web de tamanho grande no AWS WAF.
Caminho do URI
Inspeciona a parte de um URL que identifica um recurso, como /images/daily-ad.jpg
. Para obter mais informações, consulte Identificador de recurso uniforme (URI): sintaxe genérica
Se você não usar uma transformação de texto com essa opção, o AWS WAF não normalizará o URI e o inspecionará assim como ele o recebe do cliente na solicitação. Para obter mais informações sobre transformações de texto, consulte Como usar transformações de texto no AWS WAF.
Impressão digital JA3
Inspeciona a impressão digital JA3 da solicitação.
nota
A inspeção de impressão digital JA3 está disponível somente para distribuições do Amazon CloudFront e Application Load Balancers.
A impressão digital JA3 é um hash de 32 caracteres derivado do Hello do cliente TLS de uma solicitação recebida. Essa impressão digital serve como identificador exclusivo para a configuração de TLS do cliente. O AWS WAF calcula e registra essa impressão digital para cada solicitação que tenha informações suficientes do Hello do cliente TLS para o cálculo. Quase todas as solicitações da web incluem essas informações.
Como obter a impressão digital JA3 para um cliente
Você pode obter a impressão digital JA3 para as solicitações de um cliente nos logs de web ACL. Se o AWS WAF for capaz de calcular a impressão digital, ela a inclui nos logs. Para obter informações sobre os campos de log, consulte Campos de log para tráfego de ACL da Web.
Requisitos de instrução de regras
Você pode inspecionar a impressão digital JA3 somente dentro de uma instrução de correspondência de string definida para corresponder exatamente à string fornecida. Forneça a string de impressão digital JA3 dos logs em sua especificação de instrução de correspondência de string, para corresponder a quaisquer solicitações futuras que tenham a mesma configuração de TLS. Para obter mais informações sobre instruções de regra de correspondência de string, consulte Instrução de regra de correspondência de string.
Você deve fornecer um comportamento de fallback para essa instrução de regra. O comportamento de fallback é o status de correspondência que você deseja que o AWS WAF atribua à solicitação da web se o AWS WAF não conseguir calcular a impressão digital JA3. Se você optar pela correspondência, AWS WAF trata a solicitação como correspondente à instrução da regra e aplica a ação da regra à solicitação. Se você optar pela não correspondência, AWS WAF trata a solicitação como não correspondente à instrução de regra.
Para usar essa opção de correspondência, você deve registrar seu tráfego de web ACL. Para ter mais informações, consulte Log de tráfego da web ACL AWS WAF.
String de consulta
Inspeciona parte de um URL exibida após um caractere ?
, se houver.
nota
Para condições de correspondência de cross-site scripting, recomendamos que você escolha Todos os parâmetros de consulta em vez de String de consulta. A escolha de Todos os parâmetros de consulta adiciona 10 WCUs ao custo base.
Parâmetro de consulta única
Inspeciona um único parâmetro de consulta que você tenha definido como parte da string de consulta. O AWS WAF inspeciona o valor do parâmetro especificado.
Para essa opção, você também especifica um Argumento de consulta. Por exemplo, se o URL for www.xyz.com?UserName=abc&SalesRegion=seattle
, você pode especificar UserName
ou SalesRegion
para o argumento da consulta. O tamanho máximo para o nome do argumento é de 30 caracteres. O nome não diferencia maiúsculas e minúsculas, portanto, se você especificar UserName
, o AWS WAF combina a todas as variações de UserName
, incluindo username
e UsERName
.
Se a string de consulta contiver mais de uma instância do argumento de consulta que você especificou, o AWS WAF inspecionará todos os valores em busca de uma correspondência usando a lógica OR. Por exemplo, no URL www.xyz.com?SalesRegion=boston&SalesRegion=seattle
, o AWS WAF avalia o nome que você especificou em boston
e seattle
. Se qualquer um for uma correspondência, a inspeção é uma correspondência.
Todos os parâmetros da consulta
Inspeciona todos os parâmetros de consulta na solicitação. Isso é semelhante à escolha do componente de parâmetro de consulta único, mas o AWS WAF inspeciona os valores de todos os argumentos na string de consulta. Por exemplo, se o URL for www.xyz.com?UserName=abc&SalesRegion=seattle
, o AWS WAF dispara uma correspondência se o valor UserName
ou SalesRegion
corresponder aos critérios de inspeção.
A escolha dessa opção adiciona 10 WCUs ao custo base.
Corpo
Inspeciona o corpo da solicitação, avaliado como texto simples. Você também pode avaliar o corpo como JSON usando o tipo de conteúdo JSON.
O corpo da solicitação é a parte da solicitação que segue imediatamente os cabeçalhos da solicitação. Contém quaisquer dados adicionais necessários para a solicitação da Web, por exemplo, dados de um formulário.
-
No console, você seleciona isso na opção Corpo da Opção de solicitação, selecionando a opção Tipo de conteúdo Texto simples.
-
Na API, na especificação da regra
FieldToMatch
, você especificaBody
para inspecionar o corpo da solicitação como texto simples.
Para o Application Load Balancer e o AWS AppSync, o AWS WAF pode inspecionar os primeiros 8 KB do corpo de uma solicitação. Para o CloudFront, o API Gateway, o Amazon Cognito, o App Runner e o Verified Access, por padrão, o AWS WAF pode inspecionar os primeiros 16 KB, e você pode aumentar o limite para até 64 KB na configuração da ACL da Web. Para ter mais informações, consulte Como gerenciar limites de tamanho de inspeção de corpo para AWS WAF.
Você deve especificar o tratamento de tamanho grande para esse tipo de componente. O tratamento de tamanho grande define como o AWS WAF trata solicitações que têm dados de corpo maiores do que os que o AWS WAF pode inspecionar. Você pode optar por continuar a inspeção ou pular a inspeção e marcar a solicitação como compatível ou não com a regra. Para obter mais informações sobre como processar conteúdo de tamanho acima do limite, consulte Como tratar componentes de solicitação da web de tamanho grande no AWS WAF.
Você também pode avaliar o corpo como JSON analisado. Para obter mais informações, consulte a seção abaixo.
Corpo JSON
Inspeciona o corpo da solicitação, avaliado como JSON. Você também pode avaliar o corpo como texto simples.
O corpo da solicitação é a parte da solicitação que segue imediatamente os cabeçalhos da solicitação. Contém quaisquer dados adicionais necessários para a solicitação da Web, por exemplo, dados de um formulário.
-
No console, você seleciona isso na opção Corpo da Opção de solicitação, selecionando a opção Tipo de conteúdo JSON.
-
Na API, na especificação da regra
FieldToMatch
, você especificaJsonBody
.
Para o Application Load Balancer e o AWS AppSync, o AWS WAF pode inspecionar os primeiros 8 KB do corpo de uma solicitação. Para o CloudFront, o API Gateway, o Amazon Cognito, o App Runner e o Verified Access, por padrão, o AWS WAF pode inspecionar os primeiros 16 KB, e você pode aumentar o limite para até 64 KB na configuração da ACL da Web. Para ter mais informações, consulte Como gerenciar limites de tamanho de inspeção de corpo para AWS WAF.
Você deve especificar o tratamento de tamanho grande para esse tipo de componente. O tratamento de tamanho grande define como o AWS WAF trata solicitações que têm dados de corpo maiores do que os que o AWS WAF pode inspecionar. Você pode optar por continuar a inspeção ou pular a inspeção e marcar a solicitação como compatível ou não com a regra. Para obter mais informações sobre como processar conteúdo de tamanho acima do limite, consulte Como tratar componentes de solicitação da web de tamanho grande no AWS WAF.
A escolha dessa opção dobra as WCUs de custo base da instrução de correspondência. Por exemplo, se o custo base da instrução de correspondência for 5 WCUs sem análise JSON, usar a análise JSON dobra o custo para 10 WCUs.
Para essa opção, você fornece especificações adicionais, conforme descrito na seção a seguir.
Como o AWS WAF lida com a inspeção de corpo JSON
Quando o AWS WAF inspeciona o corpo da solicitação da Web como JSON, ele executa etapas para analisar o corpo e extrair os elementos JSON para inspeção. O AWS WAF executa essas etapas de acordo com suas opções de configuração.
A seguir, são listadas as etapas que o AWS WAF executa.
-
Analisar o conteúdo do corpo: o AWS WAF analisa o conteúdo do corpo da solicitação da Web para extrair os elementos JSON para inspeção. O AWS WAF faz o possível para analisar todo o conteúdo do corpo, mas a análise pode falhar em vários estados de erro no conteúdo. Os exemplos incluem caracteres inválidos, chaves duplicadas, truncamento e conteúdo cujo nó raiz não seja um objeto ou uma matriz.
A opção Comportamento de fallback da análise do corpo determina o que o AWS WAF deve fazer se não analisar completamente o corpo JSON.
-
Nenhum (comportamento padrão): O AWS WAF avalia o conteúdo somente até o ponto em que ele encontrou um erro de análise.
-
Avaliar como string: inspecionar o corpo como texto simples. O AWS WAF aplica as transformações de texto e os critérios de inspeção que você definiu para a inspeção JSON à string de texto do corpo.
-
Correspondência: tratar a solicitação Web como correspondente à instrução da regra. O AWS WAF aplica a ação da regra a essa solicitação.
-
Sem correspondência: tratar a solicitação da Web como não correspondente à instrução de regra.
nota
Esse comportamento de fallback só é acionado quando o AWS WAF encontra um erro ao analisar a string JSON.
A análise não valida totalmente o JSON
A análise do AWS WAF não valida totalmente a string JSON de entrada, portanto, a análise pode ser bem-sucedida mesmo para JSON inválido.
Por exemplo, o AWS WAF analisa o seguinte JSON inválido sem erros:
-
Vírgula ausente:
{"key1":"value1""key2":"value2"}
-
Dois pontos ausentes:
{"key1":"value1","key2""value2"}
-
Dois pontos extras:
{"key1"::"value1","key2""value2"}
Para casos como esses em que a análise é bem-sucedida, mas o resultado não é um JSON totalmente válido, o resultado das etapas subsequentes da avaliação pode variar. A extração pode perder alguns elementos ou a avaliação da regra pode ter resultados inesperados. Recomendamos que você valide o JSON recebido em seu aplicativo e trate o JSON inválido conforme necessário.
-
-
Extraia os elementos JSON: o AWS WAF identifica o subconjunto de elementos JSON a serem inspecionados de acordo com suas configurações:
-
A opção Escopo de correspondência do JSON especifica os tipos de elementos no JSON que devem ser inspecionados pelo AWS WAF.
Você pode especificar chaves, valores ou tudo para chaves e valores.
Tudo não exige que uma correspondência seja encontrada nas chaves e que uma correspondência seja encontrada nos valores. Isso requer que uma correspondência seja encontrada nas chaves, nos valores ou nos dois. Para exigir uma correspondência nas chaves e nos valores, use uma instrução lógica
AND
para combinar duas regras de correspondência, uma que inspeciona as chaves e outra que inspeciona os valores. -
A opção Conteúdo a ser inspecionado especifica como filtrar o conjunto de elementos para o subconjunto que você deseja que o AWS WAF inspecione.
É necessário especificar um dos seguintes:
-
Conteúdo JSON completo: avalia todos os elementos.
-
Somente elementos incluídos: avalia somente os elementos cujos caminhos correspondem aos critérios do JSON Pointer fornecidos por você. Não use essa opção para indicar todos os caminhos no JSON. Em vez disso, use Conteúdo JSON completo.
Para saber mais sobre a sintaxe do JSON Pointer, consulte a documentação do Internet Engineering Task Force (IETF) JavaScript Object Notation (JSON) Pointer
. Por exemplo, é possível fornecer o seguinte no console:
/dogs/0/name /dogs/1/name
Na API ou na CLI, você pode fornecer o seguinte:
"IncludedPaths": ["/dogs/0/name", "/dogs/1/name"]
-
Por exemplo, digamos que a configuração Conteúdo a ser inspecionado seja Somente elementos incluídos e a configuração de elementos incluídos seja
/a/b
.Para o seguinte exemplo de corpo JSON:
{ "a":{ "c":"d", "b":{ "e":{ "f":"g" } } } }
Os conjuntos de elementos que o AWS WAF inspecionaria para cada configuração do Escopo de correspondência JSON estão listados abaixo. Observe que a chave
b
, que faz parte do caminho dos elementos incluídos, não é avaliada.-
Todos:
e
,f,
eg
. -
Chaves:
e
ef
. -
Valores:
g
.
-
-
Inspecionar o conjunto de elementos JSON: o AWS WAF aplica todas as transformações de texto aos JSON elementos extraídos e, em seguida, corresponde o elemento resultante definido com os critérios de correspondência da instrução da regra. Esse é o mesmo comportamento de transformação e avaliação de outros componentes de solicitação da Web. Se algum dos elementos JSON extraídos corresponder, a solicitação da Web corresponderá à regra.