iT邦幫忙

0

Day 28:【工作區效能與安全性】VS Code Workspace Trust 與安全沙盒機制

  • 分享至 

  • xImage
  •  

💡 前言

在前面的課程中,我們學會了如何自訂專案的 settings.json、撰寫自動化 Tasks、建立 Dev Containers,甚至開發與發布自己的擴充套件。

然而,隨著我們經常從 GitHub 下載開源專案、參與第三方協作,或是開啟陌生人分享的程式碼資料夾,一個潛在的資安風險也隨之而來:如果下載到夾帶惡意程式碼的專案,當你用 VS Code 打開它的瞬間,專案內的自動化腳本或惡意外掛是否會自動執行並竊取你的電腦機密?

為了防範這類安全威脅,VS Code 內建了強大的 Workspace Trust(工作區信任機制) 與沙盒防護。今天 Day 28 我們就來深入探討如何確保開發環境的安全與效能!


🎯 本篇重點

  1. 什麼是 Workspace Trust?(受信任 vs 未受信任的工作區)
  2. Restricted Mode(受限制模式)下的功能防護
  3. 如何手動管理與調整工作區信任設定
  4. 提升大型專案效能的額外優化技巧

🛡️ 1. 什麼是 Workspace Trust?

當你第一次用 VS Code 打開一個不認識的資料夾時,畫面通常會跳出一個頂端提示橫幅:

“Do you trust the authors of the files in this folder?”(你信任這個資料夾中檔案的作者嗎?)

這是 VS Code 的 Workspace Trust 機制。它將所有專案分為兩種狀態:
• Trusted (受信任):允許專案內的所有擴充套件正常執行、允許自動執行 tasks.json 與 Workspace 設定。
• Restricted Mode (受限制模式 / 未受信任):將專案視為唯讀或高風險環境,啟動嚴格的安全防護網。


🔒 2. Restricted Mode 下會自動封鎖哪些危險?

如果在開啟陌生專案時你選擇了 “Restricted Mode”,VS Code 會自動啟動防護罩,限制以下行為:

• 自動化腳本封鎖:禁止專案內的 tasks.json 或自動啟動腳本執行。
• 擴充套件限制:許多第三方擴充套件會被禁止在此工作區內運行(特別是會自動執行程式碼分析或背景編譯的套件),防止惡意外掛藉機發動攻擊。
• Workspace 設定失效:忽略專案中自訂的危險 settings.json 覆寫規則,確保本機全域安全性不受污染。

這就像是你在電腦上打開一個未知的壓縮檔前先用沙盒隔離一樣,能有效防範透過專案目錄進行的惡意攻擊。


⚙️ 3. 如何手動管理與檢視信任狀態

如果你後來確認該專案是安全的,或是想隨時調整信任狀態:

  1. 開啟信任管理面板:
    按下快捷鍵 Ctrl + Shift + P 開啟命令面板,輸入並選擇 Workspaces: Manage Workspace Trust。
  2. 切換狀態:
    在彈出的設定頁面中,你可以清楚看到當前專案是被歸類在 Trusted 還是 Restricted,並可隨時手動點擊切換。
  3. 全域預設值調整:
    你也可以在全域設定中調整:「是否預設信任某個特定資料夾路徑底下的所有子專案」(例如你本機存放所有自己寫的程式碼的 Workspace 資料夾)。

⚡ 4. 額外加碼:大型專案的效能與檔案監控優化

除了資安防護外,當你開啟含有數十萬個檔案的大型專案時(例如包含龐大 node_modules 或打包目錄),常會遇到 VS Code 跳出「檔案監控限制已達上限 (File Watcher limit reached)」的警告。

你可以透過在工作區的 settings.json 中加入以下設定來優化效能:

{
  // 排除不需要監控或搜尋的巨大資料夾,大幅降低 CPU 與記憶體消耗
  "files.watcherExclude": {
    "**/.git/objects/**": true,
    "**/.git/subtree-cache/**": true,
    "**/node_modules/**": true,
    "**/dist/**": true,
    "**/build/**": true
  },
  // 提升大檔案搜尋效能
  "search.exclude": {
    "**/node_modules": true,
    "**/dist": true
  }
}



圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言