Envío de respuestas personalizadas para Block actions - AWS WAF, AWS Firewall Manager, y AWS Shield Advanced

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Envío de respuestas personalizadas para Block actions

En esta sección se explica cómo instruir AWS WAF para enviar una HTTP respuesta personalizada al cliente para las acciones de las reglas o las acciones ACL predeterminadas de la web que estén configuradas en Block. Para obtener más información sobre las acciones de las reglas, consulteUso de acciones de reglas en AWS WAF. Para obtener más información sobre ACL las acciones web predeterminadas, consulteConfiguración de la acción web ACL predeterminada en AWS WAF.

Al definir el manejo de respuestas personalizado para un Block acción, se define el código de estado, los encabezados y el cuerpo de la respuesta. Para obtener una lista de códigos de estado que puede utilizar con AWS WAF, consulte la sección siguiente,Códigos de estado compatibles para respuestas personalizadas.

Casos de uso

Entre los casos de uso de respuestas personalizadas se incluyen los siguientes:

  • Envío de un código de estado no predeterminado de vuelta al cliente.

  • Devolver encabezados de respuesta personalizada al cliente. Puede especificar cualquier nombre de encabezamiento salvo para el content-type.

  • Envío una página de error estática al cliente.

  • Redirigir el cliente a otro. URL Para ello, especifique uno de los códigos de estado de la 3xx redirección, como 301 (Moved Permanently) o, y302 (Found), a continuación, especifique un nuevo encabezado Location con el nuevo. URL

Interacción con las respuestas que defina en su recurso protegido

Las respuestas personalizadas que especifique para el AWS WAF Block la acción tiene prioridad sobre cualquier especificación de respuesta que defina en su recurso protegido.

El servicio de alojamiento del AWS recurso con el que proteges AWS WAF podría permitir la gestión de respuestas personalizadas para las solicitudes web. Algunos ejemplos son los siguientes:

  • Con Amazon CloudFront, puedes personalizar la página de error en función del código de estado. Para obtener más información, consulta Generar respuestas de error personalizadas en la Guía para CloudFront desarrolladores de Amazon.

  • Con Amazon API Gateway, puede definir el código de respuesta y estado de su puerta de enlace. Para obtener más información, consulte las respuestas de API Gateway en Gateway en la Guía para desarrolladores de Amazon API Gateway.

No se puede combinar AWS WAF configuración de respuesta personalizada con configuración de respuesta personalizada en el protegido AWS recurso. La especificación de respuesta para cualquier solicitud web individual proviene completamente de AWS WAF o completamente desde el recurso protegido.

Para solicitudes web que AWS WAF bloques, a continuación se muestra el orden de prioridad.

  1. AWS WAF respuesta personalizada: si el AWS WAF Block la acción tiene habilitada una respuesta personalizada, el recurso protegido devuelve la respuesta personalizada configurada al cliente. Cualquier configuración de respuesta que haya definido en el propio recurso protegido no tiene ningún efecto.

  2. Respuesta personalizada definida en el recurso protegido: de lo contrario, si el recurso protegido tiene una configuración de respuesta personalizada especificada, el recurso protegido utiliza esa configuración para responder al cliente.

  3. AWS WAF predeterminada Block respuesta: de lo contrario, el recurso protegido responde al cliente con la AWS WAF predeterminada Block respuesta403 (Forbidden).

Para solicitudes web que AWS WAF Si lo permite, la configuración del recurso protegido determina la respuesta que envía al cliente. No puede configurar los ajustes de respuesta en AWS WAF para las solicitudes permitidas. La única personalización que se puede configurar en AWS WAF para las solicitudes permitidas, es la inserción de encabezados personalizados en la solicitud original antes de reenviarla al recurso protegido. Esta opción se ha descrito en la sección anterior, Inserción de encabezados de solicitud personalizados para acciones no bloqueantes.

Encabezados de respuesta personalizados

Puede especificar cualquier nombre de encabezamiento salvo para el content-type.

Cuerpos de respuesta personalizados

El cuerpo de una respuesta personalizada se define en el contexto de la web ACL o del grupo de reglas en el que se quiere usar. Una vez que haya definido un cuerpo de respuesta personalizado, puede usarlo como referencia en cualquier otro lugar de la web ACL o del grupo de reglas en el que lo creó. En el individuo Block al configurar la acción, se hace referencia al cuerpo personalizado que se quiere usar y se definen el código de estado y el encabezado de la respuesta personalizada.

Cuando crea una respuesta personalizada en la consola, puede elegir entre los cuerpos de respuesta que ya ha definido o puede crear un nuevo cuerpo. Fuera de la consola, puede definir los cuerpos de respuesta personalizados a nivel web ACL o de grupo de reglas y, a continuación, hacer referencia a ellos desde la configuración de acciones de la web ACL o del grupo de reglas. Esto se muestra en el ejemplo JSON de la siguiente sección.

Respuesta personalizada de ejemplo

En el siguiente ejemplo, se JSON muestra un grupo de reglas con una configuración de respuesta personalizada. El cuerpo de la respuesta personalizada se define para todo el grupo de reglas y, a continuación, se hace referencia a él mediante una clave en la acción de regla.

{ "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 } }