Como enviar respostas personalizadas para ações Block - AWS WAF, AWS Firewall Manager, AWS Shield Advanced, e diretor AWS Shield de segurança de rede

Apresentando uma nova experiência de console para AWS WAF

Agora você pode usar a experiência atualizada para acessar a AWS WAF funcionalidade em qualquer lugar do console. Consulte mais detalhes em Trabalhando com a experiência atualizada do console.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como enviar respostas personalizadas para ações Block

Esta seção explica como AWS WAF instruir o envio de uma resposta HTTP personalizada de volta ao cliente para ações de regra, pacote de proteção ou ações padrão da Web ACL definidas como. Block Para obter mais informações sobre as ações de regra, consulte Usando ações de regras em AWS WAF. Para obter mais informações sobre o pacote de proteção padrão ou as ações da Web ACL, consulteDefinindo a ação padrão do pacote de proteção ou da ACL da web em AWS WAF.

Ao definir o tratamento personalizado de resposta para uma ação Block, você define o código de status, os cabeçalhos e o corpo da resposta. Para obter uma lista de códigos de status que você pode usar com AWS WAF, consulte a seção a seguir,Códigos de status compatíveis para respostas personalizadas.

Casos de uso

Os casos de uso de respostas personalizadas incluem o seguinte:

  • Enviar um código de status não padrão de volta ao cliente.

  • Enviar cabeçalhos de resposta personalizada de volta ao cliente. É possível especificar qualquer nome de cabeçalho, exceto content-type.

  • Enviar uma página de erro estática de volta ao cliente.

  • Redirecionar o cliente para um URL diferente. Para fazer isso, você especifica um dos códigos de status de redirecionamento 3xx, como 301 (Moved Permanently) ou 302 (Found), e depois especifica um novo cabeçalho Location com o novo URL.

Interação com respostas que você define em seu recurso protegido

As respostas personalizadas que você especifica para a AWS WAF Block ação têm precedência sobre qualquer especificação de resposta definida no seu recurso protegido.

O serviço de hospedagem do AWS recurso que você protege AWS WAF pode permitir o tratamento personalizado de respostas para solicitações da web. Os exemplos incluem:

  • Com a Amazon CloudFront, você pode personalizar a página de erro com base no código de status. Para obter informações, consulte Geração de respostas de erro personalizadas no Amazon CloudFront Developer Guide.

  • Com o Amazon API Gateway, você pode definir a resposta e o código de status do seu gateway. Para obter mais informações, consulte Respostas do API Gateway no Guia do desenvolvedor do Amazon API Gateway.

Você não pode combinar configurações de resposta AWS WAF personalizadas com configurações de resposta personalizadas no AWS recurso protegido. A especificação de resposta para qualquer solicitação individual da web vem totalmente do AWS WAF ou totalmente do recurso protegido.

Para solicitações da web que AWS WAF bloqueiam, o seguinte mostra a ordem de precedência.

  1. AWS WAF resposta personalizada — Se a AWS WAF Block ação tiver uma resposta personalizada ativada, o recurso protegido enviará a resposta personalizada configurada de volta ao cliente. Qualquer configuração de resposta que você possa ter definido no próprio recurso protegido não tem efeito.

  2. Resposta personalizada definida no recurso protegido: caso contrário, se o recurso protegido tiver configurações de resposta personalizada especificadas, o recurso protegido usará essas configurações para responder ao cliente.

  3. AWS WAF Blockresposta padrão — Caso contrário, o recurso protegido responderá ao cliente com a Block resposta AWS WAF 403 (Forbidden) padrão.

Para solicitações da Web que AWS WAF permitem, sua configuração do recurso protegido determina a resposta que ele envia de volta ao cliente. Você não pode definir as configurações de resposta AWS WAF para solicitações permitidas. A única personalização que você pode configurar AWS WAF para solicitações permitidas é a inserção de cabeçalhos personalizados na solicitação original, antes de encaminhar a solicitação para o recurso protegido. Isso é descrito na seção anterior, Como inserir cabeçalhos de solicitação personalizados para ações sem bloqueio.

Cabeçalhos de resposta personalizada

É possível especificar qualquer nome de cabeçalho, exceto content-type.

Corpos de resposta personalizada

Você define o corpo de uma resposta personalizada dentro do contexto do pacote de proteção, da ACL da web ou do grupo de regras em que deseja usá-la. Depois de definir um corpo de resposta personalizado, você pode usá-lo por referência em qualquer outro lugar no pacote de proteção, na ACL da web ou no grupo de regras em que o criou. Nas configurações de ação individual Block, você faz referência ao corpo personalizado que deseja usar e define o código de status e o cabeçalho da resposta personalizada.

Ao criar uma resposta personalizada no console, você pode escolher entre os corpos de resposta que já foram definidos ou criar um novo corpo. Fora do console, você define seus corpos de resposta personalizados no nível do pacote de proteção, da ACL da web ou do grupo de regras e, em seguida, faz referência a eles nas configurações de ação do pacote de proteção, da ACL da web ou do grupo de regras. Isso é mostrado no exemplo JSON na seção a seguir.

Exemplo de resposta personalizada

O exemplo a seguir lista o JSON de um grupo de regras com configurações de resposta personalizada. O corpo da resposta personalizada é definido para todo o grupo de regras e, em seguida, referenciado por chave na ação da regra.

{ "ARN": "test_rulegroup_arn", "Capacity": 1, "CustomResponseBodies": { "CustomResponseBodyKey1": { "Content": "This is a plain text response body.", "ContentType": "TEXT_PLAIN" } }, "Description": "This is a test rule group.", "Id": "test_rulegroup_id", "Name": "TestRuleGroup", "Rules": [ { "Action": { "Block": { "CustomResponse": { "CustomResponseBodyKey": "CustomResponseBodyKey1", "ResponseCode": 404, "ResponseHeaders": [ { "Name": "BlockActionHeader1Name", "Value": "BlockActionHeader1Value" } ] } } }, "Name": "GeoMatchRule", "Priority": 1, "Statement": { "GeoMatchStatement": { "CountryCodes": [ "US" ] } }, "VisibilityConfig": { "CloudWatchMetricsEnabled": true, "MetricName": "TestRuleGroupReferenceMetric", "SampledRequestsEnabled": true } } ], "VisibilityConfig": { "CloudWatchMetricsEnabled": true, "MetricName": "TestRuleGroupMetric", "SampledRequestsEnabled": true } }