HTML5网络数据库安全

14

我正在研究使用HTML5的离线Web应用程序解决方案。 功能完全符合我的需求,但存储的数据可以直接在浏览器中查询,因此完全不安全!

有没有任何方法可以加密/隐藏数据以使其安全?

谢谢, D.


请参见此处:https://dev59.com/xW025IYBdhLWcg3wfmDw#6686558 - user832834
3个回答

20

HTML5本地存储存在两个问题 -

  1. 一个网站读取其他网站在用户浏览器中存储的离线数据
  2. 最终用户直接查询您网站的离线数据

对于第一个问题,浏览器强制实行同源策略以限制localStorage(或Safari提供的sqllite数据库支持),因此其他网站无法访问您存储的数据。但是,请记住,如果您的网站存在XSS漏洞,则可能会窃取数据。

对于第二个问题,您无法阻止它。这就像一个cookie - 用户可以选择查看/删除/修改它。

数据加密是可行的(请参见http://farfarfar.com/scripts/encrypt/),但是毫无意义。您无法拥有单一的全局密钥/密码 - 因为攻击者可以轻松从javascript代码中找到密钥。使用用户输入的密码进行加密/解密是可能的,但客户端加密库尚未成熟或经过充分测试。很可能有很多方法可以破解它。

因此,至少现在不要将敏感数据存储在localStorage中。


2
http://code.google.com/p/gwt-crypto/ 是一款成熟的加密库,虽然它使用 GWT,但在客户端代码中使用是安全的。 - Tyson

5
您还可以查看HTML5 SecureStore提案的作者撰写的关于此问题的文章。 点击这里

2
如果您将数据存储在用户计算机上,无论您如何加密它[假设您没有使用哈希... ],用户始终可以读取它。
敏感数据始终存储在服务器端。

1
不一定。如果加密数据只能使用从服务器获取的密钥进行解密(即,它没有存储在JS或页面上的任何地方),并且如果服务器仅在用户安全认证时提供密钥,则在用户合法会话之间,本地加密数据是安全的。 - Mr. TA
哈希不是加密。 - Nisk
@drogon 当然可以,但是有总比没有好。 - Mr. TA

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