我开发了一个网站,并且需要在客户端存储一个私钥。 如何在客户端安全地存储此变量? 我可以使用 sessionStorage 吗?
(我希望当前用户只能访问此(可变)信息。一旦他关闭浏览器,就必须删除数据。)
谢谢。
答案 0 :(得分:2)
是的,是的,sessionStorage
将满足您的需求。引用MDN’s page on sessionStorage
:
- 只要打开浏览器,页面会话就会持续,并且在页面重新加载和还原后仍然存在。
- 在新标签页或窗口中打开页面会创建一个具有顶级浏览上下文值的新会话,这与会话cookie的工作方式不同。
- 使用相同的URL打开多个选项卡/窗口会为每个选项卡/窗口创建sessionStorage。
- 关闭标签页/窗口将结束会话并清除sessionStorage中的对象。
尽管有几点要注意。首先,与服务器的任何连接都需要安全进行。这需要HTTPS连接,此时可能使用TLS 1.2或1.3。
其次,您需要确保页面环境干净。这意味着您无法加载可能泄露私钥的第三方JavaScript。绝对最低要求,您加载的任何第三方JS首先都必须经过审核,然后添加integrity
attribute以确保其不变。
最后,您可能希望在用户使用完页面后添加一些东西来破坏密钥。这可能是警告他们在使用完系统后关闭页面,或者是更自动的操作,例如在 x 分钟后退出密钥并让系统及时协商新的密钥。显然,安全性和可用性之间是平衡的,但是最好的系统可以以用户透明的方式做到这一点。