參加你附近的 ,瞭解 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 或格式化,或者當您執行某些操作(如編譯程式碼或除錯)時。不道德的人可能會製作一個看起來無害的專案,在您不知情的情況下執行惡意程式碼並損害您的本地計算機。工作區信任透過在您評估不熟悉的原始碼的安全性和完整性時嘗試阻止程式碼執行,從而提供額外的安全層。