使用 CAPTCHA和 Challenge動作的最佳實務 - AWS WAFAWS Firewall Manager、 AWS Shield Advanced和 AWS Shield 網路安全主管

推出 的新主控台體驗 AWS WAF

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

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

使用 CAPTCHA和 Challenge動作的最佳實務

遵循本節中的指引來規劃和實作 AWS WAF CAPTCHA 或挑戰。

規劃 CAPTCHA 和挑戰實作

根據您的網站使用情況、您要保護之資料的敏感度,以及請求類型,決定放置 CAPTCHA 拼圖或無提示挑戰的位置。選取您將套用 CAPTCHA 的請求,以便您視需要呈現拼圖,但避免在沒有用的地方呈現它們,並可能降低使用者體驗。使用 Challenge動作來執行對最終使用者影響較小的無提示挑戰,但仍有助於驗證請求是否來自已啟用 JavaScript 的瀏覽器。

CAPTCHA 拼圖和無提示挑戰只能在瀏覽器存取 HTTPS 端點時執行。瀏覽器用戶端必須在安全的內容中執行,才能取得字符。

決定在用戶端上執行 CAPTCHA 拼圖和無提示挑戰的位置

識別您不想受到 CAPTCHA 影響的請求,例如 CSS 或映像的請求。僅在必要時使用 CAPTCHA。例如,如果您計劃在登入時進行 CAPTCHA 檢查,且使用者一律直接從登入另一個畫面取得,則可能不需要在第二個畫面中進行 CAPTCHA 檢查,而且可能會降低您的最終使用者體驗。

設定 Challenge和 CAPTCHA 使用 ,以便 AWS WAF 只會傳送 CAPTCHA 拼圖和無提示挑戰以回應GETtext/html請求。您無法執行拼圖或挑戰來回應POST請求、跨來源資源共享 (CORS) 預檢OPTIONS請求或任何其他非GET請求類型。其他請求類型的瀏覽器行為可能會有所不同,且可能無法正確處理間質。

用戶端可以接受 HTML,但仍無法處理 CAPTCHA 或挑戰間質。例如,具有小型 iFrame 的網頁上的小工具可能接受 HTML,但無法顯示 CAPTCHA 或處理它。避免為這些類型的請求放置規則動作,與不接受 HTML 的請求相同。

使用 CAPTCHA或 Challenge來驗證先前的權杖取得

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

例如,如果您實作 JavaScript 用戶端應用程式 CAPTCHA API,並在將第一個請求傳送到受保護的端點之前立即在用戶端上執行 CAPTCHA 拼圖,則您的第一個請求應一律包含同時適用於挑戰和 CAPTCHA 的字符。如需 JavaScript 用戶端應用程式整合的資訊,請參閱 AWS WAF JavaScript 整合

在這種情況下,在您的保護套件或 Web ACL 中,您可以新增與此第一次呼叫相符的規則,並使用 Challenge或 CAPTCHA規則動作進行設定。當規則符合合法最終使用者和瀏覽器時,動作會尋找有效的字符,因此不會封鎖請求或傳送挑戰或 CAPTCHA 拼圖以回應。如需規則動作如何運作的詳細資訊,請參閱 CAPTCHA 和 Challenge動作行為

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

您可以使用 CAPTCHA 和 Challenge保護來保護敏感的非 HTML 資料,例如 APIs,方法如下。

  1. 識別接受 HTML 回應的請求,以及在您敏感、非 HTML 資料請求附近執行的請求。

  2. 撰寫符合 HTML 請求的 CAPTCHA或 Challenge規則,以及符合敏感資料請求的 或 規則。

  3. 調校您的 CAPTCHA和 Challenge 抗擾性時間設定,以便對於一般使用者互動,用戶端從 HTML 請求取得的權杖可在其對敏感資料的請求中使用且未過期。如需調校資訊,請參閱 在 中設定時間戳記過期和字符豁免時間 AWS WAF

當您的敏感資料請求符合 CAPTCHA或 Challenge規則時,如果用戶端仍具有先前拼圖或挑戰中的有效字符,則不會封鎖該請求。如果字符不可用或時間戳記已過期,存取敏感資料的請求將會失敗。如需規則動作如何運作的詳細資訊,請參閱 CAPTCHA 和 Challenge動作行為

使用 CAPTCHA 和 Challenge來調整現有的規則

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

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

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

在部署 CAPTCHA 之前測試 CAPTCHA 並挑戰實作

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

在測試期間,請檢閱您的字符時間戳記過期要求,並設定 Web ACL 和規則層級豁免時間組態,以便在控制網站存取和為客戶提供良好的體驗之間取得良好的平衡。如需相關資訊,請參閱在 中設定時間戳記過期和字符豁免時間 AWS WAF