跳到主要內容

開發安全性

無論您喜不喜歡,現今的應用程式都存在於作業系統中,而這些作業系統可能會(而且經常會)受到各種攻擊而遭到入侵。當您不安全的應用程式成為此類橫向移動進入作業系統的管道時,您就是在為專業駭客提供他們可用的工具。不要成為工具。

這就是為什麼我們盡一切機會協助您保護應用程式、防止對系統層級介面的不當存取,以及製造防彈應用程式的緣故。您的使用者假設您遵循最佳實務。我們讓這變得容易,但您仍然應該了解以下資訊。

安全性是社區的責任

請務必記住,Tauri 應用程式的安全性是 Tauri 本身、所有 Rust 和 npm 相依性、您的程式碼,以及執行最終應用程式的裝置的整體安全性總和。Tauri 團隊盡力做好自己的部分,安全性社群也盡力做好自己的部分,而您也應該遵循一些重要的最佳實務。

保持應用程式為最新狀態

當將您的應用程式發布到外部時,您也會發布其中包含 Tauri 的套件。影響 Tauri 的漏洞可能會影響應用程式的安全性。透過將 Tauri 更新至最新版本,您可以確保已修補重大漏洞,且無法在您的應用程式中加以利用。也請務必保持您的編譯器 (rustc) 和轉譯器 (nodejs) 為最新狀態,因為通常會解決安全性問題。

評估您的相依性

儘管 npm 和 Crates.io 提供許多方便的套件,但選擇值得信賴的第三方程式庫(或用 Rust 重寫)是你的責任。如果你確實使用受已知漏洞影響或未維護的過時程式庫,你的應用程式安全性與安穩的睡眠可能會受到威脅。使用 npm audit 和 cargo audit 等工具自動化這個程序,並依賴安全社群的重要工作。

採用更安全的編碼實務

你的應用程式的第一道防線是你的程式碼。儘管 Tauri 可以保護你免於常見的網路漏洞,例如基於遠端程式碼執行的跨網站指令碼,但錯誤的設定可能會對安全性造成影響。即使並非如此,強烈建議採用安全的軟體開發最佳實務並執行安全性測試。我們在下一節詳細說明這代表什麼意思。

教育你的使用者

真正的安全性表示意外的行為不會發生。因此,在某種意義上,更安全表示安心地知道,只有你希望發生的情況才會發生。然而,在現實世界中,這是一個烏托邦的「夢想」。但是,透過移除盡可能多的媒介並建立在穩固的基礎上,你選擇 Tauri 向你的使用者傳達一個訊號,表示你關心他們、他們的安全和他們的裝置。

威脅模型

Tauri 應用程式由生命週期不同點的許多部分組成。我們在此說明傳統威脅以及你應該如何應對這些威脅。

上游威脅

Tauri 是專案的直接依賴項,我們會嚴格控管提交、審查、拉取要求和發布的作者權限。我們會盡力維護最新的依賴項,並採取行動更新或分岔並修正。其他專案可能沒有得到很好的維護,甚至可能從未經過稽核。整合時請考慮專案的健全性,否則您可能在不知情的情況下承擔了架構負債。

開發威脅

我們假設您這位開發人員會照料您的開發環境。您有責任確保作業系統、建置工具鏈和相關依賴項保持最新狀態。

我們所有人面臨的真正風險是所謂的「供應鏈攻擊」,這通常被視為對專案直接依賴項的攻擊。然而,在野外有一類攻擊不斷成長,直接針對開發機器,您最好直接解決這個問題。

我們強烈建議的一項做法是,僅使用雜湊版本(最好)或命名標籤(次佳)從 git 中使用關鍵依賴項。這適用於 Rust 以及 Node 生態系統。此外,請考慮要求所有貢獻者簽署他們的提交並保護 Git 分支和管線。

建置時間威脅

現代組織使用 CI/CD 來製造二進位成品。在 Tauri,我們甚至提供 GitHub 工作流程,可在多個平台上建置。如果您建立自己的 CI/CD 並依賴於第三方工具,請小心您沒有明確釘選版本的動作。

您應該為要發布的平台簽署您的二進制檔,雖然這可能會很複雜且設置成本有點高,但最終使用者會希望您的應用程式可以驗證是來自於您。

執行時期威脅

我們假設 Webview 是不安全的,這導致 Tauri 實作了多項保護措施,以保護 Webview 存取系統 API,以載入不可信的使用者層級內容。

您可以在下方閱讀更多詳細資訊,但使用 CSP 會鎖定 Webview 可以執行的通訊類型。此外,內容隔離可以防止不可信的內容或指令碼存取 Webview 內的 API。

請務必注意,無論您做什麼,請勿信任 Webview 中使用私密金鑰的密碼編譯結果。Rust 存在是有原因的。

更新器威脅

我們已盡力讓應用程式的熱更新發布盡可能簡單且安全。但是,如果您失去對清單伺服器、建置伺服器或二進制檔託管服務的控制權,則所有賭注都將失效。如果您建立自己的系統,請諮詢專業的 OPS 架構師並妥善建置。

安全內容載入

Tauri 限制了 HTML 頁面的內容安全政策 (CSP)。本機指令碼會進行雜湊處理,樣式和外部指令碼會使用密碼學隨機數來參照,這可以防止載入不允許的內容。

危險

避免載入遠端內容,例如透過 CDN 提供的指令碼,因為它們會引入攻擊媒介。但任何不可信的檔案都可能引入新的和微妙的攻擊媒介。

如果在 Tauri 組態檔中設定 [tauri > security > csp],才會啟用 CSP 保護。你應該盡可能限制它,只允許 Webview 從你信任的主機載入資源,最好是你擁有的。在編譯時,Tauri 會自動將其 Nonce 和雜湊附加到相關的 CSP 屬性,因此你只需要擔心應用程式中獨特的部分。

請參閱 script-srcstyle-srcCSP 來源,以取得有關此保護的更多資訊。