连接许可名单:确保 Web 应用的网络访问安全

发布时间:2026 年 9 月 23 日

现代 Web 应用越来越复杂,集成了第三方脚本,有时还包含生成式 AI 动态生成的代码。虽然这些集成功能很强大,但会显著增加数据渗漏的风险。为应对此风险,Chrome 152 引入了连接许可名单,这是一种新的安全机制,可让您为文档和 worker 创建严格的网络沙盒。

保护网络通信的挑战

您需要明确控制网页通信的端点,以便管理依赖项并保护网站的架构。恶意脚本或 AI 编造的代码可能会绕过应用级检查,将敏感信息发送到未经授权的服务器。

虽然内容安全政策 (CSP) 是一种强大的工具,可用于控制网页可以加载和执行的内容,但它并非旨在限制网页的通信对象。CSP 将请求分为特定类型,当您只需要宽泛的网络边界时,这种分类会引入过多的精细度。此外,CSP 并未详尽涵盖所有 Web 平台 API,遗漏了 DNS 预提取、导航、WebRTC 等机制。

什么是连接许可名单?

连接许可名单通过使浏览器成为源自您网页的所有网络连接的看门人来应对这些风险。它们提供了一种直接且简化的方法来管理使用 Fetch 和其他 Web 平台 API 发起的显式网络请求。

通过发送 Connection-Allowlist HTTP 响应标头,您可以指定允许用于所有网络通信的确切网址格式。这会强制执行框架级默认拒绝防火墙。在建立任何连接之前,浏览器会根据您的许可名单验证目标网址,如果没有匹配项,则会在网络级阻止该网址。

如何使用连接许可名单

该政策使用标准化的 URLPattern 语法来定义允许的端点。此政策针对每个窗口或工作器上下文是单独的。

基本配置

您可以使用 response-origin 令牌将提供响应的来源动态添加到许可名单中,同时添加任何特定的 API 端点。

Connection-Allowlist: ("https://api.example.com/*" response-origin)

处理重定向和 WebRTC

默认情况下,连接许可名单会阻止所有重定向和 WebRTC 连接。如果强制执行许可名单,则会导致重定向的任何请求都会被屏蔽,除非您明确选择启用。

Connection-Allowlist: ("https://api.example.com/*"); redirects=allow; webrtc=allow

举报违规行为

如需在不中断服务的情况下监控潜在的中断,您可以部署仅报告模式下的功能。此指令会解析政策并将违规报告发送到指定的 Reporting API 端点,而不会阻止连接。请务必同时配置 Reporting-Endpoints HTTP 响应标头,以将所选端点名称映射到实际网址。

Connection-Allowlist-Report-Only: ("https://trusted.com/*"); report-to=security-endpoint

关键使用场景

连接许可名单专为高安全性或动态环境而设计。 您会发现,这些功能在以下情况下特别有用:

  • 保护生成式 AI:如果您的 Web 应用执行生成或不受信任的代码(例如 AI 生成的界面或开发沙盒),您可以阻止该代码将数据泄露到外部网域。
  • 第三方监督:嵌入第三方脚本或网页游戏时,您可以保证它们不会将数据发送到未经授权的服务器,即使它们遭到入侵也是如此。
  • 架构级安全措施:您可以围绕应用的敏感部分强制执行严格的网络边界,确保通信仅在您批准的后端之间进行。

此功能可用作对基于现有内容安全政策 (CSP) 的设置的渐进增强。

测试连接许可名单

连接许可名单功能已正式推出,从 Chrome 152 开始提供。您可以立即开始保护您的 Web 应用,只需将该标头添加到服务器的响应中即可。

Chrome 开发者工具“网络”面板中的已屏蔽连接。
Chrome 开发者工具“网络”面板中的已屏蔽连接。

如需在开发期间测试配置,请执行以下操作:

  1. 将本地开发服务器配置为发送 Connection-Allowlist HTTP 响应标头。
  2. 打开 Chrome 开发者工具,然后在网络面板中检查被阻止的请求,或在问题标签页中查看详细的标头解析报告。

其他资源