Azure Web 应用程序防火墙 JavaScript 质询(预览版)概述

重要

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 质询页面示例:

屏幕截图显示了 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 地址解决了它,计算结果将失效,这可能会导致质询循环问题。