现代浏览器是否加密或以其他方式保护IndexedDB存储?

27

我的团队正在考虑使用IndexedDB来跨用户会话缓存数据。这些数据可能足够大,如果能将其留在浏览器中供以后使用而不必每次用户需要时都下载它,那将极大地提高性能。

我担心IndexedDB存在安全问题。所涉及的数据并不是非常敏感,但我们要求用户/密码获取它们确有原因。我担心如果用户的笔记本电脑被盗,这些数据可能是可访问的。这些文件是否以未加密的形式保存在文件系统中?


5
最好的做法是从一开始就对整个笔记本电脑驱动器进行加密。如果你担心数据库中的数据泄露,你可能也会担心其他地方的信息泄漏。特别是如果数据库已经加密,你必须将解密凭据存储在别处,如果这些凭据在驱动器上以明文形式存储,那么你就没有达到任何安全保护的目的。 - Marc B
3
即使他对文件系统进行了加密,明文数据库仍然可以在浏览器存储中看到,因此这并不能实现太多。@Kyaw Tun的回答是最好的方法。 - user2765977
2个回答

12
您可以在存储到indexeddb之前进行加密。这就是我在我的开源库中所做的,http://dev.yathit.com/ydn-db/doc/usage/encryption.html
需要注意的一点是,加密的数据库无法进行查询。您只能使用已知的主键检索。
您仍然需要在用户登录后从服务器传递加密密钥。

4

除非用户在笔记本电脑上使用全盘加密,否则这些文件都是未经加密的。您可以考虑使用一些使用从用户密码派生的密钥的javascript加密来加密存储的数据。


12
如果用户更改了密码,数据将无法再被访问。 - Seb
@Seb 你应该有一个单独的数据库密钥,使用从用户密码派生的密钥进行加密。这样,如果用户密码更改,只需重新加密数据库密钥即可。数据库本身不需要重新加密。 - holocronweaver
如果我使用OAuth呢?我觉得把用户的密码存在一个变量里不是一个好主意。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接