首页 > 解决方案 > 在客户端(Web)上存储敏感信息

问题描述

我开发了一个网站,我需要在客户端存储一个私钥。如何在客户端安全地存储这个变量?我可以使用sessionStorage吗?

(我希望这个(变量)信息只能由当前用户访问。一旦他关闭浏览器,数据就必须被删除。)

谢谢你。

标签: javascriptvar

解决方案


在最高级别,是的,sessionStorage会做你需要的。引用MDN 的页面sessionStorage

  • 只要浏览器打开,页面会话就会持续,并且在页面重新加载和恢复后仍然存在。
  • 在新选项卡或窗口中打开页面会使用顶级浏览上下文的值创建一个新会话,这与会话 cookie 的工作方式不同。
  • 打开具有相同 URL 的多个选项卡/窗口会为每个选项卡/窗口创建 sessionStorage。
  • 关闭选项卡/窗口会结束会话并清除 sessionStorage 中的对象。

不过有几件事需要注意。首先,任何与服务器的连接都需要安全地完成。这需要 HTTPS 连接,此时可能使用 TLS 1.2 或 1.3。

其次,您需要确保页面环境是干净的。这意味着您无法加载可能泄露私钥的第 3 方 JavaScript。至少,您加载的任何第三方 JS 都需要先进行审核,然后添加一个integrity属性以确保它不会更改。

最后,您可能希望在用户使用完页面后添加一些内容来销毁密钥。这可能是警告他们在使用完系统后关闭页面,或者更自动的方式,例如在x分钟后停用密钥并让系统及时协商新的密钥。显然,安全性和可用性之间存在平衡,但最好的系统可以以用户透明的方式做到这一点。


推荐阅读