使用和動作的最佳CAPTCHAChallenge作法 - AWS WAF, AWS Firewall Manager和 AWS Shield Advanced

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

使用和動作的最佳CAPTCHAChallenge作法

請遵循本節中的指導來規劃和實施 AWS WAF 驗證碼或挑戰。

規劃您的驗證碼並挑戰實施

根據您的網站使用情況,要保護的數據的敏感性以及請求類型,確定要在哪裡放置 CAPTCHA 難題或無聲挑戰。選擇您要應用 CAPTCHA 的請求,以便根據需要提出拼圖,但請避免在沒有用處的地方提出它們,並且可能會降低用戶體驗。使用此Challenge動作可執行對使用者影響較小的無訊息挑戰,但仍有助於確認要求來自 JavaScript 已啟用的瀏覽器。

驗證碼謎題和無聲挑戰只能在瀏覽器訪問 HTTPS 端點時運行。瀏覽器客戶端必須在安全上下文中運行才能獲取令牌。

決定在哪裡運行 CAPTCHA 難題和沉默的挑戰你的客戶

識別您不希望受到 CAPTCHA 影響的請求,例如對 CSS 或圖像的請求。僅在必要時使用驗證碼。例如,如果您打算在登錄時進行 CAPTCHA 檢查,並且始終直接從登錄到另一個屏幕將用戶帶到另一個屏幕,則可能不需要在第二個屏幕上進行 CAPTCHA 檢查,並且可能會降低您的最終用戶體驗。

配置您的Challenge並CAPTCHA使用,以便 AWS WAF 僅發送 CAPTCHA 難題和響應GETtext/html請求的無聲挑戰。您無法運行難題或挑戰來響應POST請求,跨源資源共享(CORS)預檢OPTIONS請求或任何其他非請求類型GET。其他要求類型的瀏覽器行為可能會有所不同,而且可能無法正確處理插頁式廣告。

客戶端可能接受 HTML,但仍無法處理驗證碼或挑戰插頁式。例如,網頁上含有小型 iFrame 的小工具可能接受 HTML,但無法顯示驗證碼或處理它。請避免針對這些類型的要求設置規則動作,與不接受 HTML 的要求相同。

使用CAPTCHA或驗證先前Challenge的令牌獲取

在合法使用者應始終擁有一個有效權杖的位置,您只能使用規則動作來驗證是否存在。在這些情況下,請求是否可以處理插入式項目並不重要。

例如,如果您實施 JavaScript 客戶端應用程序 CAPTCHA API,並在將第一個請求發送到受保護的端點之前立即在客戶端上運行 CAPTCHA 難題,則您的第一個請求應始終包含對挑戰和 CAPTCHA 都有效的令牌。如需用 JavaScript 戶端應用程式整合的資訊,請參閱AWS WAF JavaScript 整合

在此情況下,您可以在 Web ACL 中新增符合此第一個呼叫的規則,並使用Challenge或CAPTCHA規則動作來設定。當規則與合法的終端使用者和瀏覽器相符時,動作會找到有效的 Token,因此不會封鎖要求,也不會傳送挑戰或 CAPTCHA 拼圖作為回應。如需規則動作如何運作的詳細資訊,請參閱CAPTCHA 以及 Challenge 動作行為

使用和保護您的敏感非 HTML 資料 CAPTCHAChallenge

您可以通過以下方法對敏感的非 HTML 數據(例如 API)使用驗證碼和Challenge保護。

  1. 識別接受 HTML 回應的要求,並且在接近您敏感、非 HTML 資料要求的要求時執行的要求。

  2. 撰寫CAPTCHA或符合 HTML 要求並符合您敏感資料要求的Challenge規則。

  3. 調整您的CAPTCHA和Challenge免疫時間設置,以便對於一般用戶互動,客戶端從 HTML 請求中獲得的令牌可用,並且在對您敏感數據的請求中未過期。如需調整資訊,請參閱設置時間戳到期和令牌免疫時間 AWS WAF

當您的敏感數據的請求匹配CAPTCHA或Challenge規則時,如果客戶端仍然具有來自先前難題或挑戰的有效令牌,則不會阻止它。如果令牌不可用或時間戳記已過期,則訪問敏感數據的請求將失敗。如需規則動作如何運作的詳細資訊,請參閱CAPTCHA 以及 Challenge 動作行為

使用驗證碼並Challenge調整您現有的規則

檢閱您現有的規則,查看是否要變更或新增規則。以下是一些需要考慮的常見情況。

  • 如果您有封鎖流量的速率型規則,但是您將速率限制保持相對較高以避免封鎖合法使用者,請考慮在封鎖規則之後新增第二個以速率為基礎的規則。指定第二個規則比封鎖規則下限,並將規則動作設定為CAPTCHA或Challenge。封鎖規則仍會封鎖速率過高的要求,而新規則會以更低的速率封鎖大部分自動化流量。如需以比率為基礎的規則的資訊,請參閱使用速率型規則陳述式 AWS WAF

  • 如果您有封鎖要求的受管規則群組,您可以將部分或所有規則的行為從切換Block至CAPTCHA或Challenge。若要這麼做,請在受管規則群組組態中覆寫規則動作設定。如需有關覆寫規則動作的資訊,請參閱規則群組規則動作覆寫

在部署驗證碼之前對其進行測試並提出挑戰

至於所有新功能,請遵循的指導測試和調整您的 AWS WAF 保護

在測試過程中,請查看令牌時間戳記到期要求,並設置 Web ACL 和規則級別免疫時間配置,以便在控制對網站的訪問和為客戶提供良好體驗之間取得良好的平衡。如需相關資訊,請參閱設置時間戳到期和令牌免疫時間 AWS WAF