桌面应用没有后端鉴权,密码存在本地。研究了 localStorage、sessionStorage、以及 Electron 的 safeStorage 模块,最后选了一套折中方案。
localStorage 风险
明文存储,用户可以直接在开发者工具里看到。不适合存敏感信息。
Electron safeStorage
用系统密钥链加密,安全性高。但只在主进程可用,渲染进程需要 IPC 通信。
const { safeStorage } = require('electron');
const encrypted = safeStorage.encryptString('password');
const decrypted = safeStorage.decryptString(encrypted);
最终方案
密码用 safeStorage 加密存储,同时做输入框防截屏处理。ADMIN_TOKEN 用环境变量,不存文件。