重要
Azure Web 应用程序防火墙 JavaScript 质询目前以预览版提供。 有关适用于 Beta 版、预览版或尚未正式发布的 Azure 功能的法律条款,请参阅 Azure 预览版补充使用条款 。
Azure Front Door 上的 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 规则的其余部分。 未能成功计算质询的请求将被阻止。
下面是一个 JavaScript 质询页面示例:
过期日期
WAF 策略设置定义 JavaScript 质询 Cookie 有效期(以分钟为单位)。 在生存期到期后,用户将被质询。 生存期是介于 5 和 1440 之间的整数,默认值为 30 分钟。 JavaScript 质询 Cookie 名称为 afd_azwaf_jsclearance
.
注释
成功完成质询后,JavaScript 质询到期 Cookie 将被注入到用户的浏览器中。
局限性
- 不支持 AJAX 和 API 调用。
- 如果首次调用收到的 JavaScript 质询的 POST 正文大小大于 128 KB,则会阻止该调用。 此外,不支持对页面中嵌入的非 HTML 资源进行质询。 例如,图像、css、js,等等。 但是,如果有先前成功的 JavaScript 质询请求,则会去除前面的限制。
- Microsoft Internet Explorer 不支持质询。 Microsoft Edge、Chrome、Firefox 和 Safari Web 浏览器的最新版本支持质询。
- 跨域资源共享 (CORS) 请求会导致质询循环。 如果您访问的页面触发了一个 JavaScript 质询,这个质询来自与运行 JavaScript 质询的域不同的其他域,那么无论您之前是否通过了质询,仍然会面临挑战。
- 如果一个 IP 地址收到 JavaScript 质询,而另一个 IP 地址解决了它,计算结果将失效,这可能会导致质询循环问题。