使用 ASP.NET Web Forms入门

Web Forms模型以及如何创建页面和使用控件。

为什么在 Web Live 预览版中阻止页面的外部资源?

如果你的页面中有来自第三方域的任何外部资源,你可能会注意到 Web Live Preview 中的设计器已阻止加载这些资源,并显示以下 toast:

阻止的资源 Toast

你可能想知道为什么在设计器中阻止加载资源,以及 Toast 显示的原因。 本文介绍阻止资源的原因。

Web Live Preview (WLP) 是一个基于 BrowserLink 构建的 Visual Studio 扩展。 WLP 使用 BrowserLink 为 Visual Studio 与设计器之间的双向通信提供通道。 这种双向通信允许 WLP 提供许多功能:

  • 将设计器中的内容和当前所选节点与编辑器的节点同步。
  • 将从设计器创建的新内容推送到编辑器中。
  • 执行操作面板命令。

如果将来自第三方的任何脚本或资源注入网页,则通过使用 WLP 和 BrowserLink 进行跨站点脚本 (XSS) 攻击,这可能会使你面临潜在的安全漏洞。

如果第三方资源可以将恶意代码注入站点,则代码可以使用注入设计器中的浏览器链接脚本调用回 Visual Studio。 注入的脚本可能允许代码在 Visual Studio 中打开的文件中写入任意内容,或者打开其他攻击途径。

目前,没有好方法可以防止攻击者通过 BrowserLink 脚本与 Visual Studio 通信。

安全漏洞缓解

我们已尽可能限制并缓解了通过 BrowserLink 脚本返回到 Visual Studio 的通信中的安全漏洞。 但是,某些攻击仍可以通过 XSS 攻击实现。

为了降低此类 XSS 攻击的可能性,默认情况下,WLP 会阻止加载所有外部资源。 如果阻止了任何外部资源,WLP 在设计器的右上角显示以下 toast:

阻止的资源 Toast

(在此示例中,我们使用以下 SVG,它是示例 Web 应用中使用的外部资源: https://visualstudio.microsoft.com/wp-content/uploads/2021/10/Product-Icon.svg)

如果 Microsoft Edge DevTools 窗口已打开,你可能还会注意到以下消息,说明外部资源加载失败的原因:

阻止的资源消息 DevTools

在设计器的 Toast 中,如果选择 “单击此处” 链接,则会显示以下对话框,其中阻止的资源的域会自动添加到对话框的列表中:

允许域

默认情况下,来自存储在对话框列表中的外部域的任何资源都不会在 WLP 中被阻止,并像往常一样加载。 单击“ 确定”后,设计器将重新加载页面,并加载任何以前阻止的资源,这些资源域已添加到对话框中。 请确保仅允许已验证为可信且安全的外部域。

单击 Toast 中的 Web Live 预览 - 外部域 链接将打开同一对话框,但不会将阻止资源的任何域添加到对话框中:

允许域而不添加

还可以通过 Tools -> Options -> Web Live Preview -> Allowed external domains during design 设置访问对话框。 对话设置按已安装的 Visual Studio 实例进行。

工具选项阻止的资源

警告

默认情况下,允许不阻止域可能会使你遭受上述 XSS 攻击。 同样,我们强烈建议仅允许可以验证为可信和安全的外部域。