Exemplo de ACFP: resposta personalizada para credenciais comprometidas
Por padrão, a verificação de credenciais realizada pelo AWSManagedRulesACFPRuleSet
do grupo de regras trata as credenciais comprometidas rotulando e bloqueando a solicitação. Para obter detalhes sobre o grupo de regras e o comportamento das regras, consulte Grupo de regras de prevenção contra fraude na criação de contas (ACFP) do AWS WAF Fraud Control .
Para informar ao usuário que as credenciais da conta que ele forneceu foram comprometidas, você pode fazer o seguinte:
-
Substituir a regra
SignalCredentialCompromised
por Count:Isso faz com que a regra conte e rotule somente as solicitações correspondentes. -
Adicione uma regra de correspondência de rótulo com tratamento personalizado:Configure essa regra para corresponder ao rótulo do ACFP e para realizar seu tratamento personalizado.
As listagens de web ACL a seguir mostram o grupo de regras gerenciadas do ACFP do exemplo anterior, com a ação de regra SignalCredentialCompromised
substituída para contar. Com essa configuração, quando esse grupo de regras avalia qualquer solicitação da web que usa credenciais comprometidas, ele rotula a solicitação, mas não a bloqueia.
Além disso, a web ACL agora tem uma resposta personalizada chamada aws-waf-credential-compromised
e uma nova regra chamada AccountSignupCompromisedCredentialsHandling
. A prioridade da regra é uma configuração numérica maior que a do grupo de regras, portanto, ela é executada após o grupo de regras na avaliação da web ACL. A nova regra corresponde a qualquer solicitação com o rótulo de credenciais comprometidas do grupo de regras. Quando a regra encontra uma correspondência, ela aplica a ação Block à solicitação com o corpo de resposta personalizado. O corpo de resposta personalizado fornece informações ao usuário final de que suas credenciais foram comprometidas e propõe uma ação a ser tomada.
{ "Name": "compromisedCreds", "Id": "... ", "ARN": "arn:aws:wafv2:us-east-1:111122223333:regional/webacl/compromisedCreds/...", "DefaultAction": { "Allow": {} }, "Description": "", "Rules": [ { "Name": "AWS-AWSManagedRulesACFPRuleSet", "Priority": 0, "Statement": { "ManagedRuleGroupStatement": { "VendorName": "AWS", "Name": "AWSManagedRulesACFPRuleSet", "ManagedRuleGroupConfigs": [ { "AWSManagedRulesACFPRuleSet": { "CreationPath": "/web/signup/submit-registration", "RegistrationPagePath": "/web/signup/registration", "RequestInspection": { "PayloadType": "JSON", "UsernameField": { "Identifier": "/form/username" }, "PasswordField": { "Identifier": "/form/password" }, "EmailField": { "Identifier": "/form/email" }, "PhoneNumberFields": [ { "Identifier": "/form/country-code" }, { "Identifier": "/form/region-code" }, { "Identifier": "/form/phonenumber" } ], "AddressFields": [ { "Identifier": "/form/name" }, { "Identifier": "/form/street-address" }, { "Identifier": "/form/city" }, { "Identifier": "/form/state" }, { "Identifier": "/form/zipcode" } ] }, "EnableRegexInPath": false } } ], "RuleActionOverrides": [ { "Name": "SignalCredentialCompromised", "ActionToUse": { "Count": {} } } ] } }, "OverrideAction": { "None": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "AWS-AWSManagedRulesACFPRuleSet" } }, { "Name": "AccountSignupCompromisedCredentialsHandling", "Priority": 1, "Statement": { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:managed:aws:acfp:signal:credential_compromised" } }, "Action": { "Block": { "CustomResponse": { "ResponseCode": 406, "CustomResponseBodyKey": "aws-waf-credential-compromised", "ResponseHeaders": [ { "Name": "aws-waf-credential-compromised", "Value": "true" } ] } } }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "AccountSignupCompromisedCredentialsHandling" } } ], "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "compromisedCreds" }, "Capacity": 51, "ManagedByFirewallManager": false, "RetrofittedByFirewallManager": false, "LabelNamespace": "awswaf:111122223333:webacl:compromisedCreds:", "CustomResponseBodies": { "aws-waf-credential-compromised": { "ContentType": "APPLICATION_JSON", "Content": "{\n \"credentials-compromised\": \"The credentials you provided have been found in a compromised credentials database.\\n\\nTry again with a different username, password pair.\"\n}" } } }