尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Folia跨平台密码安全存储:macOS钥匙串与Linux secret-service实现

Folia跨平台密码安全存储:macOS钥匙串与Linux secret-service实现 Folia跨平台密码安全存储macOS钥匙串与Linux secret-service实现【免费下载链接】folia-major专注于绚丽的歌词动画效果的本地音乐/navidrome/第三方多平台在线音乐播放器项目地址: https://gitcode.com/GitHub_Trending/fo/folia-majorFolia 是一款专注绚丽歌词动画的本地音乐播放器同时支持 Navidrome、QQ 音乐、酷狗等在线音源。为了让在线账号登录在重启后依然有效Folia 的 Electron 主进程采用系统级密码保险库做跨平台密码安全存储macOS 使用钥匙串KeychainLinux 走 GNOME secret-servicelibsecret / D-Bus Secret Service API并配合 Electron 的safeStorage加密模块确保 QQ 的 musickey、酷狗的登录 token 等敏感凭据永远不会以明文落在配置文件里。为什么不能把登录凭据写成明文在线音源QQ 音乐、酷狗登录后会拿到一串凭据QQ 侧是musickey、刷新密钥与设备上下文酷狗侧是token、userid、dfid等 cookie。这些凭据一旦写入普通配置文件任何能读取用户目录的程序都能拿去冒用你的账号。Folia 的取舍很明确能用系统加密就加密不能加密就只保留在内存里而不是退而求其次写一份打了一层混淆的明文。macOS 钥匙串Electron safeStorage 的默认通道在 macOS以及 Windows 的 DPAPI上Folia 直接复用 Electron 内置的safeStorage模块主进程调用safeStorage.encryptString()把凭据序列化后的 JSON 加密成密文密文以 base64 写入应用配置electron-store重启后读取密文调用safeStorage.decryptString()借助钥匙串中的密钥还原。加密密钥由系统钥匙串托管应用自身拿不到明文密钥跨用户、跨机器拷贝配置文件也无法解密——这正是密码安全存储与普通文件加密的本质区别。Linux secret-service为 Wayland 桌面补上加密缺口Linux 的坑在于Chromium 内核Electron 的底座按XDG_CURRENT_DESKTOP选择密码后端遇到它不认识的环境Hyprland、Sway、i3、river 等 Wayland 合成器会静默回退到basic_text后端——那只是简单混淆并不具备真实加密能力。为此 Folia 在应用早期就显式指定后端核心逻辑见 linuxPasswordStore.cjs非 KDE 桌面统一注入--password-storegnome-libsecret把密码后端锁定到 secret-serviceGNOME Keyring / KWallet 兼容的 libsecret 实现在 main.cjs 中于ready事件前追加该启动参数KDE 会话保持 Chromium 自有的 KWallet 检测避免把已写入 KWallet 的凭据孤儿化手动覆盖设置环境变量FOLIA_PASSWORD_STORE可强制指定basic、gnome-libsecret、kwallet5等后端或设为auto交还给系统检测方便排障。启动后还有一道自检见 main.cjs若最终后端仍是basic_text或加密不可用控制台会明确告警在线账号将不会持久化而不是让用户重启后莫名其妙丢失登录。凭据仓库加密不可用就拒绝落盘QQ 与酷狗两条凭据链路共用同一套防护模式实现分别在 qqAuthSessionRepository.cjs 与 kugouApiBridge.cjs保存前校验每次写入前调用isEncryptionAvailable()检查系统保险库状态Linux 上额外确认后端不是basic_text否则直接抛出拒绝使用未加密后端错误失败即内存化加密不可用时登录本身仍然可用凭据保存在主进程内存中只是不做持久化——宁可每次重启重新扫码也不把 QQ musickey 写到磁盘旧数据升级酷狗凭据早期的 V1 明文键在读取后会被立即删除下一次保存时自动升级为 V2 加密格式见 kugouApiBridge.cjs渲染进程隔离QQ 的 musickey 等敏感字段只存在于主进程加密仓库中界面层仅持有不透明的会话标识登录响应的 token 也会在下发给渲染进程前被剔除见sanitizeRendererBody。小结平台密码保险库说明macOS系统钥匙串KeychainsafeStorage 默认通道WindowsDPAPI 凭据保护safeStorage 默认通道LinuxGNOME/通用 Waylandsecret-service / libsecret显式指定--password-storeLinuxKDEKWallet保持 Chromium 自动检测Folia 用系统钥匙串优先 明文零容忍的策略把跨平台密码安全存储做成了普通用户完全无感的体验登录一次重启即恢复而一旦系统保险库不可用它宁可让你重新登录也绝不让凭据裸奔。如果你想深入了解在线音源的账号与凭据持久化边界可以阅读 src/services/onlineMusic/README.md。【免费下载链接】folia-major专注于绚丽的歌词动画效果的本地音乐/navidrome/第三方多平台在线音乐播放器项目地址: https://gitcode.com/GitHub_Trending/fo/folia-major创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表