開發安全性
無論您喜不喜歡,現今的應用程式都存在於作業系統中,而這些作業系統可能會(而且經常會)受到各種攻擊而遭到入侵。當您不安全的應用程式成為此類橫向移動進入作業系統的管道時,您就是在為專業駭客提供他們可用的工具。不要成為工具。
這就是為什麼我們盡一切機會協助您保護應用程式、防止對系統層級介面的不當存取,以及製造防彈應用程式的緣故。您的使用者假設您遵循最佳實務。我們讓這變得容易,但您仍然應該了解以下資訊。
安全性是社區的責任
請務必記住,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-src
、style-src
和 CSP 來源,以取得有關此保護的更多資訊。