現已釋出!閱讀關於 11 月新增功能和修復的內容。

工作區信任

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 屬性指定適用的確切擴充套件版本,如果您想為所有版本設定狀態,則可以刪除 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.