You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Sign in with Apple的Web应用:如何安全存储客户端对称加密密钥

客户端安全存储对称密钥的可行方案

1. Web Crypto API + IndexedDB 搭配会话过期机制

  • 用Web Crypto API生成和管理对称密钥,将密钥加密后存储在IndexedDB中(加密密钥可基于用户Sign in with Apple的身份令牌衍生)。
  • 实现自动过期:登录时记录会话起始时间,每次用户交互更新过期时间;当会话超时或浏览器关闭时,自动删除IndexedDB中的密钥条目。
  • 防XSS强化:配置严格的Content Security Policy (CSP) 限制脚本来源,对所有用户输入做转义处理,缩小XSS攻击面。

2. WebAuthn 绑定密钥推导流程

  • 结合Sign in with Apple身份验证,利用WebAuthn公钥凭据体系:用户创建密码短语后,通过KDF生成对称密钥,再用WebAuthn私钥加密该对称密钥。
  • 解密时触发WebAuthn身份验证,验证通过后解密出对称密钥,用完立即从内存中清除,不做持久化存储。
  • 自动过期通过WebAuthn验证策略实现,比如设置每次新会话必须重新完成Sign in with Apple + WebAuthn验证,才能重新推导密钥。

3. Service Worker 隔离存储

  • 将密钥存储在Service Worker的专用缓存中,Service Worker运行在独立于主页面的上下文,可降低XSS脚本直接访问密钥的风险。
  • 过期逻辑:在Service Worker中设置定时器,超时自动清除缓存密钥;同时监听页面beforeunload事件,关闭页面时触发密钥清理。
  • 注意:需确保Service Worker的注册和更新流程安全,避免被恶意脚本篡改。

核心安全原则

  • 所有密钥生成、加密、解密操作完全在客户端执行,绝不向服务器传输密钥或可直接推导密钥的明文数据。
  • KDF使用高迭代次数和随机盐值,盐值可随加密数据一起存储在服务器(盐值无需保密)。
  • 启用HSTS强制HTTPS通信,防范中间人攻击。

内容的提问来源于stack exchange,提问作者t3lls

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 15:03:21