参加你附近的 ,了解 VS Code 中的 AI 辅助开发。

工作区信任

Visual Studio Code 非常重视安全性,并希望帮助您安全地浏览和编辑代码,无论其来源或原始作者如何。工作区信任功能允许您决定项目文件夹中的代码是否可以在未经您明确批准的情况下由 VS Code 和扩展程序执行。

Trust this folder dialog

注意:如有疑问,请将文件夹保留在受限模式。您可以随时稍后启用信任

安全代码浏览

公共存储库和文件共享上提供了如此多的源代码,这真是太棒了。无论编码任务或问题如何,可能总能找到一个好的解决方案。同样,有如此多强大的编码工具可以帮助您理解、调试和优化代码,这也很棒。但是,使用开源代码和工具确实存在风险,您可能会面临恶意代码执行和漏洞利用的风险。

当使用不熟悉的代码时,工作区信任通过防止工作区在“受限模式”下打开时自动执行工作区中的任何代码,提供了一层额外的安全性。

注意:术语“工作区”和“文件夹”在 VS Code UI 和文档中广泛使用。您可以将“工作区”视为 VS Code 创建和使用的带有额外元数据的文件夹。

受限模式

当工作区信任对话框提示时,如果您选择否,我不信任作者,VS Code 将进入受限模式以防止代码执行。

工作台顶部会显示一个横幅,其中包含一个链接,可用于通过工作区信任编辑器管理您的文件夹。在状态栏中,您还可以看到一个徽章,指示工作区处于受限模式。

Workspace Trust Restricted Mode banner

受限模式尝试通过禁用或限制多个 VS Code 功能(任务、调试、工作区设置和扩展程序)的操作来防止自动代码执行。

要查看受限模式下禁用的完整功能列表,您可以通过横幅中的管理链接或通过选择状态栏中的受限模式徽章来打开工作区信任编辑器。

Workspace Trust editor

重要提示:工作区信任无法阻止恶意扩展程序执行代码并忽略受限模式。您只应安装和运行来自您信任的知名发布者的扩展程序。

任务

VS Code 任务可以运行脚本和工具二进制文件。由于任务定义在工作区.vscode文件夹中定义,因此它们是存储库已提交源代码的一部分,并共享给该存储库的每个用户。如果有人创建恶意任务,任何克隆该存储库的人都可能不知不觉地运行它。

如果您在受限模式下尝试运行甚至枚举任务(任务 > 运行任务),VS Code 会显示提示以确认您信任该文件夹并可以继续执行任务。如果您取消对话框,VS Code 将保持在受限模式。

Workspace Trust Restricted Mode tasks dialog

调试

与运行 VS Code 任务类似,调试扩展程序可以在启动调试会话时运行调试器二进制文件。因此,当文件夹在受限模式下打开时,调试也会被禁用。

如果您在受限模式下尝试启动调试会话(调试 > 开始调试),VS Code 会显示提示以确认您信任该文件夹并可以继续启动调试器。如果您取消对话框,VS Code 将保持在受限模式,并且不会启动调试会话。

Workspace Trust Restricted Mode debugging dialog

工作区设置

工作区设置存储在工作区根目录的.vscode文件夹中,因此任何克隆工作区存储库的人都可以共享。某些设置包含可执行文件的路径(例如,linter 二进制文件),如果将其设置为指向恶意代码,可能会造成损害。因此,当在受限模式下运行时,VS Code 会禁用一组工作区设置。

Workspace Trust editor workspace settings link

在工作区信任编辑器中,选择未应用的工作区设置链接,以打开按@tag:requireTrustedWorkspace标签限定的设置编辑器。

Settings editor scoped by the requireTrustedWorkspace tag in a restricted workspace

扩展

VS Code 扩展程序生态系统极其丰富多样。人们创建了扩展程序来帮助完成几乎任何编程任务或编辑器自定义。有些扩展程序提供完整的编程语言支持(IntelliSense、调试、代码分析),而另一些则允许您播放音乐或拥有虚拟宠物

大多数扩展程序都代表您运行代码,并可能造成危害。有些扩展程序具有设置,如果配置为运行意外的可执行文件,可能会导致其恶意行为。因此,默认情况下,未明确选择工作区信任的扩展程序在受限模式下处于禁用状态。

Workspace Trust disabled extensions link

您可以通过选择工作区信任编辑器中的扩展程序已禁用或功能受限链接来查看已安装扩展程序的状态,该链接会显示通过@workspaceUnsupported过滤器限定的扩展程序视图。

Extensions view filtered by workspaceUnsupported showing disabled and limited extensions

未选择工作区信任的扩展程序在受限模式下可以被禁用或受限。

在受限模式下禁用

未明确指示支持在受限模式下运行的扩展程序显示在在受限模式下禁用部分。如果扩展程序作者认为其扩展程序可能因工作区中的修改(设置或文件)而被滥用,他们也可以指示他们不希望在受限模式下启用。

在受限模式下受限

扩展程序作者还可以评估其扩展程序的潜在安全漏洞,并声明在受限模式下运行时具有受限支持。此模式意味着扩展程序可能会禁用某些功能或特性以防止可能的漏洞利用。

扩展程序可以在“扩展”视图中的“工作区信任”徽章上添加自定义文本,解释在不受信任的文件夹中运行时存在的限制。例如,VS Code 内置的 PHP 扩展程序将 php.validate.executablePath 设置的使用限制为受信任的文件夹,因为覆盖此设置可能会运行恶意程序。

PHP extension limited in Restricted Mode hover

您可以使用下面启用扩展程序部分中描述的 extensions.supportUntrustedWorkspaces 设置覆盖扩展程序的工作区信任支持级别。

如果您尝试在受限模式下安装扩展程序,系统会提示您信任工作区或仅安装扩展程序。如果扩展程序不支持工作区信任,它将被安装,但会被禁用或以有限功能运行。

Workspace Trust install an extension in Restricted Mode dialog

注意:扩展程序作者可以通过阅读工作区信任扩展程序指南了解如何更新其扩展程序以支持工作区信任。

信任工作区

如果您信任项目的作者和维护者,您可以信任本地计算机上的项目文件夹。例如,信任来自知名 GitHub 组织(如 github.com/microsoft 或 github.com/docker)的存储库通常是安全的。

当您打开一个新文件夹时,最初的“工作区信任”提示使您能够信任该文件夹及其子文件夹。

Trust this folder dialog

您还可以打开“工作区编辑器”,并通过选择信任信任父级按钮快速切换文件夹的信任状态。

Workspace Trust editor Trust buttons

有几种方法可以调出工作区信任编辑器对话框。

处于受限模式时

  • 受限模式横幅管理链接
  • 受限模式状态栏项目

您还可以随时使用

  • 命令面板中的工作区:管理工作区信任命令(⇧⌘P(Windows、Linux Ctrl+Shift+P

选择文件夹

当您信任一个文件夹时,它会被添加到工作区信任编辑器中显示的受信任文件夹和工作区列表。

Workspace Trust editor Trusted Folders and Workspaces list

您可以手动从此列表中添加、编辑和删除文件夹,以启用或禁用工作区信任。活动文件夹在此列表中以粗体突出显示。

选择父文件夹

当您通过工作区信任编辑器信任一个文件夹时,您可以选择也信任父文件夹。这将对父文件夹及其所有子文件夹应用信任。

Workspace Trust editor showing the Trust Parent button

如果您有许多包含受信任内容并位于一个文件夹下的文件夹,信任父文件夹会很有帮助。

当您打开一个受信任父级下的子文件夹时,您将看不到通常的不信任按钮将您置于受限模式。相反,会有文本提到您的文件夹由于另一个文件夹而被信任。

您可以从受信任文件夹和工作区列表中添加、修改和删除父文件夹条目。

文件夹配置

当您信任父文件夹时,所有子文件夹都将被信任,这使您可以通过存储库在磁盘上的位置来控制工作区信任。

例如,您可以将所有受信任的存储库放在“TrustedRepos”父文件夹下,将不熟悉的存储库放在另一个父文件夹下,例如“ForEvaluation”。您将信任“TrustedRepos”文件夹,并选择性地信任“ForEvaluation”下的文件夹。

├── TrustedRepos - Clone trusted repositories under this parent folder
└── ForEvaluation - Clone experimental or unfamiliar repositories under this parent folder

您还可以通过将存储库分组到特定于组织的父文件夹下,来分组和设置对它们的信任。

├── github/microsoft - Clone a specific organization's repositories under this parent folder
├── github/{myforks} - Place your forked repositories under this parent folder
└── local - Local un-published repositories

启用扩展程序

如果您想使用受限模式,但您喜欢的扩展程序不支持工作区信任,该怎么办?如果一个扩展程序虽然有用且功能齐全,但没有被积极维护并且没有声明其工作区信任支持,就可能发生这种情况。为了处理这种情况,您可以使用 extensions.supportUntrustedWorkspaces 设置覆盖扩展程序的信任状态。

重要提示:谨慎覆盖扩展程序的工作区信任支持。扩展程序作者可能有充分的理由在受限模式下禁用其扩展程序。如有疑问,请联系扩展程序作者或查阅最新的变更日志以获取更多背景信息。

在设置编辑器(⌘,(Windows、Linux Ctrl+,)中,您可以通过扩展程序:支持不受信任的工作区设置(extensions.supportUntrustedWorkspaces)来覆盖单个扩展程序的工作区信任。

Extension support

选择在 settings.json 中编辑链接以管理扩展 ID 及其支持状态和版本的列表。您可以通过 IntelliSense 建议选择任何已安装的扩展程序。

下面您可以看到 Prettier 扩展程序的settings.json条目。

  "extensions.supportUntrustedWorkspaces": {
    "esbenp.prettier-vscode": {
      "supported": true,
      "version": "6.4.0"
    },
  },

您可以使用supported属性启用或禁用工作区信任支持。version属性指定适用的确切扩展版本,如果您想为所有版本设置状态,可以删除版本字段。

如果您想了解有关扩展程序作者如何评估和确定在受限模式下限制哪些功能的更多信息,您可以阅读工作区信任扩展程序指南

打开不受信任的文件

如果您打开一个位于受信任文件夹之外的文件,VS Code 会检测到该文件来自文件夹根目录之外的某个位置,并提示您选择继续打开该文件或在新窗口中以受限模式打开该文件。以受限模式打开是最安全的选择,一旦您确定文件值得信任,您可以随时在原始 VS Code 窗口中重新打开该文件。

Untrusted files dialog

如果您不希望在打开不受信任工作区之外的文件时收到提示,您可以将 security.workspace.trust.untrustedFiles 设置为open。您还可以将 security.workspace.trust.untrustedFiles 设置为newWindow以始终在受限模式下创建新窗口。在不受信任文件对话框中选中记住我对所有工作区的决定选项会将您的选择应用于 security.workspace.trust.untrustedFiles 用户设置。

打开不受信任的文件夹

当使用包含多个文件夹的多根工作区时,如果您尝试向受信任的多根工作区添加新文件夹,系统会提示您决定是否信任该文件夹中的文件,否则整个工作区将切换到受限模式。

Untrusted folder dialog

空窗口(未打开文件夹)

默认情况下,如果您打开一个新的 VS Code 窗口(实例)而未打开文件夹或工作区,VS Code 会以完全信任模式运行该窗口。所有已安装的扩展程序都已启用,您可以不受限制地使用空窗口。

当您打开文件时,系统会提示您是否要打开不受信任的文件,因为没有父文件夹。

您可以使用工作区信任编辑器(在命令面板中选择工作区:管理工作区信任),然后选择不信任,将空窗口切换到受限模式。空窗口在当前会话中保持受限模式,但如果您重新启动或创建新窗口,它将恢复为受信任模式。

如果您希望所有空窗口都处于受限模式,可以将 security.workspace.trust.emptyWindow 设置为false

设置

以下是可用的工作区信任设置

命令行开关

您可以通过在 VS Code 命令行中传递--disable-workspace-trust来禁用工作区信任。此开关仅影响当前会话。

后续步骤

了解更多信息

常见问题

在受限模式下我仍然可以编辑源代码吗?

是的,您仍然可以在受限模式下浏览和编辑源代码。某些语言功能可能被禁用,但始终支持文本编辑。

我安装的扩展程序都去哪儿了?

在受限模式下,任何不支持工作区信任的扩展程序都将被禁用,并且所有 UI 元素(例如活动栏图标和命令)都将不显示。

您可以使用 extensions.supportUntrustedWorkspaces 设置覆盖扩展程序的工作区信任支持级别,但请务必小心。启用扩展程序中有更多详细信息。

我可以禁用工作区信任功能吗?

可以,但不建议这样做。如果您不希望 VS Code 在打开新文件夹或存储库时检查工作区信任,可以将 security.workspace.trust.enabled 设置为 false。VS Code 将像 1.57 版本发布之前一样运行。

如何取消信任文件夹/工作区?

打开工作区信任编辑器(通过命令面板中的工作区:管理工作区信任)并选择不信任按钮。您还可以从受信任文件夹和工作区列表中删除该文件夹。

为什么我看不到“不信任”按钮?

如果您在工作区信任对话框中没有看到不信任按钮,则该文件夹的信任级别可能继承自父文件夹。查看受信任文件夹和工作区列表以检查父文件夹是否已启用工作区信任。

某些工作流,例如连接到GitHub Codespace附加到正在运行的 Docker 容器,会自动受信任,因为这些是您应该已经高度信任的托管环境。

工作区信任可以防止什么?

VS Code 的许多功能都允许第三方工具和扩展程序自动运行,例如在保存时进行 linting 或格式化,或者在您执行某些操作(例如编译代码或调试)时。不道德的人可能会制作一个看起来无害的项目,该项目会在您不知情的情况下运行恶意代码并损害您的本地计算机。工作区信任通过在您评估不熟悉源代码的安全性和完整性时尝试阻止代码执行,提供了一层额外的安全性。

© . This site is unofficial and not affiliated with Microsoft.