更少更安全:Obsidian 如何降低供應鏈攻擊的風險 供應鏈攻擊是惡意更新,悄悄進入許多應用程序使用的開源代碼。以下是我們如何設計 Obsidian,以確保該應用程序是您思想的安全和私密環境。 更少更安全 這聽起來可能很明顯,但我們降低供應鏈攻擊風險的主要方法是避免依賴第三方代碼。與我們類別中的其他應用程序相比,Obsidian 的依賴項數量很少。請查看我們信用頁面上的開源庫列表。 像 Bases 和 Canvas 這樣的功能是從頭開始實現的,而不是導入現成的庫。這使我們能夠完全控制 Obsidian 中運行的內容。 - 對於小型實用函數,我們幾乎總是在我們的代碼中重新實現它們。 - 對於中型模塊,我們會分叉它們,並在許可證允許的情況下將其保留在我們的代碼庫中。 - 對於像 pdf.js、Mermaid 和 MathJax 這樣的較大庫,我們包含已知良好、版本鎖定的文件,並且僅在偶爾或安全修復發佈時進行升級。我們閱讀發佈說明,查看上游更改,並在切換之前進行徹底測試。 這種方法使我們的依賴圖保持淺層,子依賴項很少。較小的表面區域降低了惡意更新潛入的機會。 實際在應用中發佈的內容 只有少數幾個包是您運行的應用程序的一部分,例如 Electron、CodeMirror、moment.js。其他包幫助我們構建應用程序,並且從不交付給用戶,例如 esbuild 或 eslint。 版本固定和鎖定文件 所有依賴項都嚴格版本固定,並與鎖定文件一起提交。鎖定文件是構建的真實來源,因此我們獲得確定性的安裝。這為我們在審查更改時提供了簡單的審計軌跡。 我們不運行 postinstall 腳本。這可以防止包在安裝期間執行任意代碼。 緩慢、謹慎的升級 當我們進行依賴項更新時,我們: ...