重要
Azure Web 应用程序防火墙 JavaScript 质询目前以预览版提供。 有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款。
Azure Front Door 和 Azure 应用程序网关上的 Azure Web 应用程序防火墙 (WAF) 提供了 JavaScript 质询功能,作为用于高级机器人防护的缓解选项之一。 对于 Azure Front Door,它在高级版上作为自定义规则集和 Bot Manager 1.x 规则集中的一个操作提供。
JavaScript 质询是一个不可见的 Web 质询,用于区分合法用户和机器人。 恶意机器人无法通过质询,这会保护 Web 应用程序。 此外,JavaScript 质询非常有用,因为它减少了合法用户的摩擦(原因是它不需要任何人工干预)。
工作原理
当 JS 质询在 Azure WAF 上处于活动状态并且客户端的 HTTP(s) 请求与特定规则匹配时,客户端会显示 Microsoft JS 质询页面。 当用户的浏览器计算质询时,用户会看到此页面几秒钟。 客户端的浏览器必须在此页面上成功计算 JavaScript 质询,才能从 Azure WAF 接收验证。 当计算成功时,WAF 会判定请求来自非机器人客户端,并运行 WAF 规则的其余部分。 未能成功计算质询的请求将被阻止。
每次进行访问尝试时都会对跨域资源共享 (CORS) 请求进行质询。 因此,如果客户端从一个与托管 JavaScript 质询的域不同的域访问触发该质询的页面,则即使客户端之前通过了质询,客户端也会再次面临质询。
此外,如果客户端解决了 JavaScript 质询,但随后客户端的 IP 地址发生了变化,则系统会再次发出质询。
下面是一个 JavaScript 质询页面示例:
过期日期
WAF 策略设置定义 JavaScript 质询 Cookie 有效期(以分钟为单位)。 在生存期到期后,用户将被质询。 生存期是一个介于 5 和 1440 之间的整数,默认值为 30 分钟。 Azure Front Door 上的 JavaScript 质询 cookie 名称为 afd_azwaf_jsclearance
,Azure 应用程序网关上的 JavaScript 质询 cookie 名称为 appgw_azwaf_jsclearance
。
注意
成功完成质询后,JavaScript 质询到期 Cookie 将被注入到用户的浏览器中。
限制
- 不支持 AJAX 和 API 调用。
- 如果首次调用收到的 JavaScript 质询的 POST 正文大小大于 128 KB,则会阻止该调用。 此外,不支持对页面中嵌入的非 HTML 资源进行质询。 例如,图像、css、js,等等。 但是,如果有先前成功的 JavaScript 质询请求,则会去除前面的限制。
- Microsoft Internet Explorer 不支持质询。 Microsoft Edge、Chrome、Firefox 和 Safari Web 浏览器的最新版本支持质询。
- 在公开预览期间,应用程序网关的 Web 应用程序防火墙上的 JavaScript 质询操作不支持“速率限制”类型的自定义规则。