CAPTCHA 和 Challenge動作行為 - AWS WAFAWS Firewall Manager、 AWS Shield Advanced和 AWS Shield 網路安全主管

推出 的新主控台體驗 AWS WAF

您現在可以使用更新後的體驗,在主控台的任何位置存取 AWS WAF 功能。如需詳細資訊,請參閱使用更新的主控台體驗

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

CAPTCHA 和 Challenge動作行為

本節說明 CAPTCHA和 Challenge動作的功能。

當 Web 請求符合具有 CAPTCHA或 Challenge動作之規則的檢查條件時, 會根據其權杖和豁免時間組態的狀態, AWS WAF 決定如何處理請求。 AWS WAF 也會考慮請求是否可以處理 CAPTCHA 拼圖或挑戰指令碼間質。指令碼設計成以 HTML 內容處理,而且只能由預期使用 HTML 內容的用戶端正確處理。

注意

當您在其中一個規則中使用 CAPTCHA或 Challenge 規則動作,或做為規則群組中的規則動作覆寫時,需支付額外費用。如需詳細資訊,請參閱AWS WAF 定價

動作如何處理 Web 請求

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

  • 有效的字符 – AWS WAF 處理類似 Count動作。 AWS WAF 會套用您為規則動作設定的任何標籤和請求自訂,然後繼續使用保護套件或 Web ACL 中的其餘規則來評估請求。

  • 杖遺失、無效或過期 – AWS WAF 停止請求的保護套件或 Web ACL 評估,並封鎖它前往其預期目的地。

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

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

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

        注意

        對於在用戶端瀏覽器中執行的 Javascript 應用程式,此標頭僅適用於應用程式的網域。標頭不適用於跨網域擷取。如需詳細資訊,請參閱以下章節。

      • HTTP 狀態碼 202 Request Accepted

      • 如果請求包含具有 text/html 值的 Accept 標頭,回應將包含 JavaScript 插入式頁面和挑戰指令碼。

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

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

        注意

        對於在用戶端瀏覽器中執行的 Javascript 應用程式,此標頭僅適用於應用程式的網域。標頭不適用於跨網域擷取。如需詳細資訊,請參閱以下章節。

      • HTTP 狀態碼 405 Method Not Allowed

      • 如果請求包含值為 的 Accept 標頭text/html,回應會包含 JavaScript 頁面與 CAPTCHA 指令碼的間質。

若要在保護套件或 Web ACL 或規則層級設定權杖過期的時間,請參閱 在 中設定時間戳記過期和字符豁免時間 AWS WAF

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

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

挑戰和 CAPTCHA 中介裝置的作用

當挑戰間質執行時,在用戶端成功回應之後,如果它還沒有權杖,則間質會為其初始化一個權杖。然後,它會使用挑戰求解時間戳記來更新權杖。

當 CAPTCHA 間質執行時,如果用戶端還沒有權杖,CAPTCHA 間質會先叫用挑戰指令碼來挑戰瀏覽器並初始化權杖。然後,間質執行其 CAPTCHA 拼圖。當最終使用者成功完成拼圖時,間質會使用 CAPTCHA 求解時間戳記更新字符。

在這兩種情況下,在用戶端成功回應且指令碼更新字符之後,指令碼會使用更新的字符重新提交原始 Web 請求。

您可以設定 AWS WAF 如何處理字符。如需相關資訊,請參閱用於 AWS WAF 智慧型威脅緩解的字符