Envoi de réponses personnalisées pour Block actions - AWS WAF, AWS Firewall Manager, et AWS Shield Advanced

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Envoi de réponses personnalisées pour Block actions

Cette section explique comment donner des instructions AWS WAF pour renvoyer une HTTP réponse personnalisée au client pour les actions de règle ou les actions Web ACL par défaut définies sur Block. Pour plus d'informations sur les actions relatives aux règles, consultezUtilisation des actions liées aux règles dans AWS WAF. Pour plus d'informations sur les ACL actions Web par défaut, consultezConfiguration de l'action Web ACL par défaut dans AWS WAF.

Lorsque vous définissez une gestion personnalisée des réponses pour un Block action, vous définissez le code d'état, les en-têtes et le corps de la réponse. Pour obtenir la liste des codes d'état que vous pouvez utiliser avec AWS WAF, voir la section qui suit,Codes d'état pris en charge pour les réponses personnalisées.

Cas d’utilisation

Les cas d'utilisation des réponses personnalisées sont les suivants :

  • Renvoyer un code d'état autre que celui par défaut au client.

  • Renvoi d'en-têtes de réponse personnalisés au client. Vous pouvez spécifier n'importe quel nom d'en-tête, à l'exception decontent-type.

  • Renvoi d'une page d'erreur statique au client.

  • Redirection du client vers un autre URL Pour ce faire, vous spécifiez l'un des codes d'état de 3xx redirection, tel que 301 (Moved Permanently) ou302 (Found), puis vous spécifiez un nouvel en-tête Location portant le nouveau nomURL.

Interaction avec les réponses que vous définissez dans votre ressource protégée

Réponses personnalisées que vous spécifiez pour AWS WAF Block les actions ont priorité sur les spécifications de réponse que vous définissez dans votre ressource protégée.

Le service d'hébergement du AWS ressource que vous protégez AWS WAF peut permettre un traitement personnalisé des réponses pour les requêtes Web. Voici quelques exemples :

  • Avec Amazon CloudFront, vous pouvez personnaliser la page d'erreur en fonction du code d'état. Pour plus d'informations, consultez la section Génération de réponses d'erreur personnalisées dans le manuel Amazon CloudFront Developer Guide.

  • Amazon API Gateway vous permet de définir le code de réponse et de statut de votre passerelle. Pour plus d'informations, consultez les réponses de API Gateway dans Gateway dans le manuel Amazon API Gateway Developer Guide.

Vous ne pouvez pas combiner AWS WAF paramètres de réponse personnalisés avec paramètres de réponse personnalisés dans le champ protégé AWS ressource. La spécification de réponse pour toute demande Web individuelle provient soit entièrement de AWS WAF ou entièrement à partir de la ressource protégée.

Pour les requêtes Web qui AWS WAF blocs, le tableau suivant indique l'ordre de priorité.

  1. AWS WAF réponse personnalisée — Si AWS WAF Block l'action a une réponse personnalisée activée, la ressource protégée renvoie la réponse personnalisée configurée au client. Les paramètres de réponse que vous avez éventuellement définis dans la ressource protégée elle-même n'ont aucun effet.

  2. Réponse personnalisée définie dans la ressource protégée : sinon, si des paramètres de réponse personnalisés sont spécifiés pour la ressource protégée, la ressource protégée utilise ces paramètres pour répondre au client.

  3. AWS WAF default Block réponse — Dans le cas contraire, la ressource protégée répond au client avec le AWS WAF default Block réponse403 (Forbidden).

Pour les requêtes Web qui AWS WAF Si vous le permettez, votre configuration de la ressource protégée détermine la réponse qu'elle renvoie au client. Vous ne pouvez pas configurer les paramètres de réponse dans AWS WAF pour les demandes autorisées. La seule personnalisation que vous pouvez configurer dans AWS WAF pour les demandes autorisées, il faut insérer des en-têtes personnalisés dans la demande d'origine, avant de transmettre la demande à la ressource protégée. Cette option est décrite dans la section précédente,Insertion d'en-têtes de demande personnalisés pour les actions non bloquantes.

En-têtes de réponse personnalisés

Vous pouvez spécifier n'importe quel nom d'en-tête, à l'exception decontent-type.

Organismes de réponse personnalisés

Vous définissez le corps d'une réponse personnalisée dans le contexte du Web ACL ou du groupe de règles dans lequel vous souhaitez l'utiliser. Après avoir défini un corps de réponse personnalisé, vous pouvez l'utiliser par référence n'importe où sur le Web ACL ou dans le groupe de règles dans lequel vous l'avez créé. Dans l'individu Block paramètres d'action, vous référencez le corps personnalisé que vous souhaitez utiliser et vous définissez le code d'état et l'en-tête de la réponse personnalisée.

Lorsque vous créez une réponse personnalisée dans la console, vous pouvez choisir parmi les corps de réponse que vous avez déjà définis ou créer un nouveau corps. En dehors de la console, vous définissez vos corps de réponse personnalisés au niveau du Web ACL ou du groupe de règles, puis vous les référencez à partir des paramètres d'action du Web ACL ou du groupe de règles. Cela est illustré dans l'exemple JSON de la section suivante.

Exemple de réponse personnalisée

L'exemple suivant répertorie les paramètres JSON d'un groupe de règles avec des paramètres de réponse personnalisés. Le corps de réponse personnalisé est défini pour l'ensemble du groupe de règles, puis référencé par une touche dans l'action de règle.

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