我正在开发需要敏感数据用户密码和私钥的单页应用程序。然而,我不希望他们每次都在需要的时候输入密码。
在登录过程中,在不影响安全性的情况下,最安全的存储方式是什么?我不想把它存储在本地存储中,也不想存储在会话存储中,因为会话存储是不安全的。
如果你想访问JavaScript代码中的这些信息,那么没有安全的方法,黑客只需在代码中设置断点并检查相关变量。
如果你只需要这个信息来维持一个";会话";使用服务器-然后您可以使用加密的会话cookie,标记为HttpOnly和SameDomain。饼干被称为";会话";因为一旦关闭浏览器,它就会自动过期并消失。它被加密(使用像AES-256这样的对称加密(,这样只有服务器才能解密它
cookie本身不需要包含密码,只需包含以下4条信息即可:
- 用户ID
- 浏览器的IP地址(以防止从不同位置使用相同的cookie(
- DB中用户数据最后一次更改的时间戳(在用户更改其密码或配置文件中的其他敏感数据后立即使cookie无效(
- cookie中的数据应过期的时间戳(以防止使用太旧的cookie(
通常cookie中的数据应在20-30分钟后被视为过期,但您可以选择允许用户将此时间设置为首选项(最长60分钟(。
每次SPA向后端API发出AJAX请求时,该cookie都应该更新/刷新为新的过期。