Manipulando uma resposta CAPTCHA de AWS WAF - 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. Para obter mais detalhes, consulte Trabalhando com o 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á.

Manipulando uma resposta CAPTCHA de AWS WAF

Esta seção fornece um exemplo de como lidar com uma resposta CAPTCHA.

Uma AWS WAF regra com uma CAPTCHA ação encerra a avaliação de uma solicitação da web correspondente se a solicitação não tiver um token com um carimbo de data/hora CAPTCHA válido. Se a solicitação for uma GET text/html chamada, a CAPTCHA ação então serve ao cliente um intersticial com um quebra-cabeça de CAPTCHA. Quando você não integra a JavaScript API CAPTCHA, o intersticial executa o quebra-cabeça e, se o usuário final o resolver com sucesso, reenvia automaticamente a solicitação.

Ao integrar a JavaScript API CAPTCHA e personalizar o tratamento do CAPTCHA, você precisa detectar a resposta de encerramento do CAPTCHA, fornecer seu CAPTCHA personalizado e, se o usuário final resolver o quebra-cabeça com sucesso, reenviar a solicitação web do cliente.

O exemplo de código a seguir mostra como fazer isso.

nota

A resposta da AWS WAF CAPTCHA ação tem um código de status HTTP 405, que usamos para reconhecer a CAPTCHA resposta nesse código. Se seu endpoint protegido usa um código de status HTTP 405 para comunicar qualquer outro tipo de resposta para a mesma chamada, esse código de exemplo também renderizará um quebra-cabeça CAPTCHA para essas respostas.

<!DOCTYPE html> <html> <head> <script type="text/javascript" src="<Integration URL>/jsapi.js" defer></script> </head> <body> <div id="my-captcha-box"></div> <div id="my-output-box"></div> <script type="text/javascript"> async function loadData() { // Attempt to fetch a resource that's configured to trigger a CAPTCHA // action if the rule matches. The CAPTCHA response has status=HTTP 405. const result = await AwsWafIntegration.fetch("/protected-resource"); // If the action was CAPTCHA, render the CAPTCHA and return // NOTE: If the endpoint you're calling in the fetch call responds with HTTP 405 // as an expected response status code, then this check won't be able to tell the // difference between that and the CAPTCHA rule action response. if (result.status === 405) { const container = document.querySelector("#my-captcha-box"); AwsWafCaptcha.renderCaptcha(container, { apiKey: "...API key goes here...", onSuccess() { // Try loading again, now that there is a valid CAPTCHA token loadData(); }, }); return; } const container = document.querySelector("#my-output-box"); const response = await result.text(); container.innerHTML = response; } window.addEventListener("load", () => { loadData(); }); </script> </body> </html>