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 las acciones Block
Esta sección explica cómo ordenarle a AWS WAF para que envíe respuestas HTTP personalizadas al cliente para las acciones de regla o las acciones predeterminadas de la ACL web que estén configuradas en Block. Para obtener más información sobre las acciones de las reglas, consulte Utilización de acciones de reglas en AWS WAF. Para obtener más información acerca de las acciones ACL web predeterminadas, consulte Cómo establecer la acción predeterminada de la ACL web en AWS WAF.
Al definir la gestión de respuestas personalizadas para una acción Block, define el código de estado, los encabezados y el cuerpo de la respuesta. Para obtener una lista de los códigos de estado que puede utilizar con AWS WAF, consulte la sección siguiente, Códigos de estado compatibles para la respuesta personalizada.
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.
-
Redireccionamiento del cliente a una URL diferente. Para ello, especifique uno de los códigos de estado de redirección de
3xx
, como301 (Moved Permanently)
o302 (Found)
, y, a continuación, especifique un nuevo encabezado con el nombreLocation
y con la nueva URL.
Interacción con las respuestas que defina en su recurso protegido
Las respuestas personalizadas que especifique para la AWS WAF Block acción tienen prioridad sobre cualquier especificación de respuesta que defina en el recurso protegido.
El servicio de host del recurso AWS que protege con AWS WAF puede permitir la gestión personalizada de las respuestas para las solicitudes web. Algunos ejemplos son los siguientes:
-
Con Amazon CloudFront, puede personalizar la página de error en función del código de estado. Para obtener información, consulte el tema sobre la Generación de respuestas de error personalizadas en la Guía para desarrolladores de Amazon CloudFront.
-
Con Amazon API Gateway, puede definir el código de respuesta y estado de su puerta de enlace. Para obtener información, consulte el tema Respuestas de la puerta de enlace en API Gateway en la Guía para desarrolladores de Amazon API Gateway.
No puede combinar la configuración de respuesta personalizada de AWS WAF con la configuración de respuesta personalizada en el recurso protegido de AWS. La especificación de respuesta para cualquier solicitud web individual proviene completamente de AWS WAF o completamente del recurso protegido.
En el caso de las solicitudes web que bloquea AWS WAF, a continuación se muestra el orden de prioridad.
-
Respuesta personalizada de AWS WAF: si la acción Block de AWS WAF 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.
-
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.
-
Respuesta predeterminada Block de AWS WAF: de lo contrario, el recurso protegido responde al cliente con la respuesta predeterminada Block
403 (Forbidden)
de AWS WAF.
En el caso de las solicitudes web que permita AWS WAF, la configuración del recurso protegido determina la respuesta que envía al cliente. No puede configurar la configuración de la respuesta en AWS WAF para las solicitudes permitidas. La única personalización que puede configurar AWS WAF para las solicitudes permitidas es insertar 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 ACL web o del grupo de reglas en el que desee utilizarla. Una vez que haya definido un cuerpo de respuesta personalizado, puede usarlo como referencia en cualquier otro lugar de la ACL web o del grupo de reglas en el que lo creó. En la configuración de la acción individual Block, 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 en la ACL web o en el grupo de reglas, y, a continuación, hacer referencia a ellos desde la configuración de las acciones de la ACL web 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 muestra la JSON de 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 } }