CAPTCHA和行Challenge動行為 - AWS WAFAWS Firewall Manager、和 AWS Shield Advanced

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

CAPTCHA和行Challenge動行為

當 Web 請求符合具有CAPTCHA或Challenge動作的規則的檢查條件時,會根據其 Token 的狀態和免疫時間配置來 AWS WAF 決定如何處理請求。 AWS WAF 還考慮請求是否可以處理 CAPTCHA 難題或挑戰腳本插頁式。這些指令碼的設計是以 HTML 內容的形式處理,而且只能由預期 HTML 內容的用戶端正確處理。

注意

如果您在其中一項規則中使用CAPTCHA或規Challenge則動作,或是規則群組中的規則動作覆寫,系統會向您收取額外費用。如需詳細資訊,請參閱 AWS WAF 定價

動作如何處理 Web 請求

AWS WAF 將CAPTCHA或動Challenge作套用至 Web 要求,如下所示:

  • 有效權杖 — AWS WAF 處理類似於Count動作的權杖。 AWS WAF 套用您為規則動作設定的任何標籤和要求自訂,然後使用 Web ACL 中的其餘規則繼續評估要求。

  • 遺失、無效或已過期的 Token — AWS WAF 停止要求的 Web ACL 評估,並阻止它前往預定的目的地。

    AWS WAF 根據規則動作類型,產生回應並傳回給用戶端:

    • Challenge— 在回應中 AWS WAF 包含下列項目:

      • 具有 challenge 值的標頭 x-amzn-waf-action

        注意

        在用戶端瀏覽器中執行的 JavaScript 應用程式無法使用此標頭。如需詳細資訊,請參閱下一節。

      • HTTP 狀態碼 202 Request Accepted

      • 如果要求包含值為的Accept標頭text/html,則回應會包含插JavaScript 頁式頁面與挑戰指令碼。

    • CAPTCHA— 在回應中 AWS WAF 包含下列項目:

      • 具有 captcha 值的標頭 x-amzn-waf-action

        注意

        在用戶端瀏覽器中執行的 JavaScript 應用程式無法使用此標頭。如需詳細資訊,請參閱下一節。

      • HTTP 狀態碼 405 Method Not Allowed

      • 如果要求包含值為的Accept標頭text/html,則回應會包含帶有 CAPTCHA 指令碼的插JavaScript 頁式頁面。

若要在 Web ACL 或規則層級設定權杖到期的時間,請參閱時間戳記到期: AWS WAF 權杖豁免時間

在用戶端瀏覽器中執行的 JavaScript 應用程式無法使用標頭

使用 CAPTCHA 或挑戰 AWS WAF 回應回應來回應用戶端要求時,不包含跨來源資源共用 (CORS) 標頭。CORS 標頭是一組訪問控制標頭,它告訴客戶端 Web 瀏覽器哪些域,HTTP 方法和 HTTP 標頭可以由 JavaScript應用程序使用。如果沒有 CORS 標頭,在 JavaScript 用戶端瀏覽器中執行的應用程式就不會被授與 HTTP 標x-amzn-waf-action頭的存取權,因此無法讀取CAPTCHA和Challenge回應中提供的標頭。

什麼挑戰和驗證碼插頁式的作用

當挑戰插頁式運行時,在客戶端成功響應之後,如果它還沒有令牌,則插頁式初始化一個令牌。然後它使用挑戰解決時間戳更新令牌。

當 CAPTCHA 插頁式運行時,如果客戶端還沒有令牌,CAPTCHA 插頁式首先調用挑戰腳本以挑戰瀏覽器並初始化令牌。然後插頁式運行其驗證碼拼圖。當最終用戶成功完成難題時,插頁式更新帶有 CAPTCHA 解決時間戳的令牌。

在任何一種情況下,在用戶端成功回應且指令碼更新權杖之後,指令碼會使用更新的 Token 重新提交原始 Web 要求。

您可以配置如何 AWS WAF 處理令牌。如需相關資訊,請參閱AWS WAF 網絡請求令牌