本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 網絡請求令牌。