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 智慧型威脅緩解的字符