safeStorage
允許訪問本地機器上字串的簡單加密和解密。
程序: 主程序
此模組透過使用作業系統提供的密碼系統,為儲存在磁碟上的資料增加額外的保護。每個平臺的當前安全語義如下所述。
- macOS:加密金鑰以防止其他應用程式在未經使用者覆蓋的情況下載入它們的方式儲存在 鑰匙串訪問 中,用於您的應用程式。因此,內容受到其他使用者和在相同使用者空間中執行的其他應用程式的保護。
- Windows:加密金鑰透過 DPAPI 生成。根據 Windows 文件:“通常,只有使用與加密資料的人相同的登入憑據的使用者才能解密資料”。因此,內容受到同一機器上其他使用者的保護,但不受在相同使用者空間中執行的其他應用程式的保護。
- Linux:加密金鑰在秘密儲存中生成和儲存,具體取決於您的視窗管理器和系統設定。當前支援的選項是
kwallet、kwallet5、kwallet6和gnome-libsecret,但未來版本的 Electron 可能會提供更多選項。因此,透過safeStorageAPI 保護的內容的安全性語義因視窗管理器和秘密儲存而異。- 請注意,並非所有 Linux 設定都具有可用的秘密儲存。如果不可用秘密儲存,則使用
safeStorageAPI 儲存的專案將不受保護,因為它們透過硬編碼的純文字密碼進行加密。當safeStorage.getSelectedStorageBackend()返回basic_text時,您可以檢測到這種情況。
- 請注意,並非所有 Linux 設定都具有可用的秘密儲存。如果不可用秘密儲存,則使用
請注意,在 Mac 上,需要訪問系統鑰匙串,並且這些呼叫可能會阻塞當前執行緒以收集使用者輸入。如果 Linux 上可用密碼管理工具,則情況也是如此。
方法
safeStorage 模組具有以下方法
safeStorage.isEncryptionAvailable()
返回 boolean - 是否可用加密。
在 Linux 上,如果應用程式已發出 ready 事件並且可用金鑰,則返回 true。在 MacOS 上,如果可用鑰匙串,則返回 true。在 Windows 上,一旦應用程式發出 ready 事件,則返回 true。
safeStorage.encryptString(plainText)
plainText字串
返回 Buffer - 表示加密字串的位元組陣列。
如果加密失敗,此函式將丟擲錯誤。
safeStorage.decryptString(encrypted)
encryptedBuffer
返回 string - 解密後的字串。將使用 safeStorage.encryptString 獲得的加密緩衝區解密回字符串。
如果解密失敗,此函式將丟擲錯誤。
safeStorage.setUsePlainTextEncryption(usePlainText)
usePlainText布林值
此函式在 Linux 上將強制模組使用記憶體中的密碼來建立用於加密/解密函式的對稱金鑰,當無法確定當前活動桌面環境的有效作業系統密碼管理器時。此函式在 Windows 和 MacOS 上不起作用。
safeStorage.getSelectedStorageBackend() Linux
返回 string - Linux 上選擇的密碼管理器的使用者友好名稱。
此函式將返回以下值之一
basic_text- 當桌面環境未被識別或提供了以下命令列標誌--password-store="basic"時。gnome_libsecret- 當桌面環境為X-Cinnamon、Deepin、GNOME、Pantheon、XFCE、UKUI、unity或提供了以下命令列標誌--password-store="gnome-libsecret"時。kwallet- 當桌面會話為kde4或提供了以下命令列標誌--password-store="kwallet"時。kwallet5- 當桌面會話為kde5或提供了以下命令列標誌--password-store="kwallet5"時。kwallet6- 當桌面會話為kde6或提供了以下命令列標誌--password-store="kwallet6"時。unknown- 當在應用程式發出ready事件之前呼叫該函式時。