本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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
。 -
如果请求包含值为的
Accept
标头text/html
,则响应将包括带有质询脚本的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 应用程序无法使用标头
时间 AWS WAF 使用CAPTCHA或质询响应来响应客户端请求,它不包括跨源资源共享 (CORS) 标头。CORS标头是一组访问控制标头,用于告诉客户端 Web 浏览器 JavaScript应用程序可以使用哪些域、HTTP方法和HTTP标头。如果没有CORS标头,在客户端浏览器中运行的 JavaScript 应用程序就无法访问HTTP标头,因此无法读取中提供的x-amzn-waf-action
标头 CAPTCHA 以及 Challenge 回应。
挑战和CAPTCHA插页式广告的作用
当质询插页式广告运行时,在客户端成功响应之后,如果它还没有令牌,则插页式广告会为其初始化一个令牌。然后,它会使用质询解题时间戳更新令牌。
当CAPTCHA插页式广告运行时,如果客户端还没有令牌,则CAPTCHA插页式广告会先调用挑战脚本来挑战浏览器并初始化令牌。然后,插页式广告开始拼图。CAPTCHA当最终用户成功完成拼图后,插页式广告会使用CAPTCHA求解时间戳更新标记。
无论哪种情况,在客户端成功响应并且脚本更新令牌后,脚本都会使用更新的令牌重新提交原始 Web 请求。
你可以配置如何 AWS WAF 处理代币。有关信息,请参阅在 Web 请求中使用令牌 AWS WAF。