HTML5本地存储安全性

52

假设当前HTML5实现,使用localStorage储存敏感数据是好还是坏的想法?

我可以使用什么方法来保护数据,以便客户端计算机上的有权访问的人无法读取它?


我曾经在类似问题的答案中发表过一些有启发性的见解。 - Brian M. Hunt
2个回答

65

这不是个好主意。

  1. 有权限访问该设备的人总是能够读取localStorage,你不能做太多防范措施。只需在Firebug控制台中键入 'localStorage',就可以得到所有键值对的完整列表。
  2. 如果您的应用程序存在XSS漏洞,则存储在 localStorage 中的任何内容都会暴露给攻击者。
  3. 你可以尝试加密它,但有一个问题。在客户端加密是可行的,但这意味着用户必须提供一个密码,并且您必须依赖于测试不太充分的JavaScript加密实现。
  4. 当然可以在服务器端进行加密,但那样客户端代码将无法读取或更新它,因此您已经降低了localStorage的价值,仅仅成为一个高级cookie。

如果需要保密,最好不要将其发送到客户端。您无法控制的内容永远不可能是安全的。


5
我支持这个观点。不良实践。https://www.owasp.org/index.php/HTML5_Security_Cheat_Sheet#Local_Storage_.28a.k.a._Offline_Storage.2C_Web_Storage.29 - Pierre Ernst
11
然而,一个好的方面是来自一个域的脚本只能读取该域设置的localStorage - Om Shankar
2011年NCC Group发表的文章JavaScript Cryptography Considered Harmful提供了关于JS加密不良选择的额外引用,详细阐述了其中涉及的许多问题。 - amcgregor
似乎这个做法已经过时了,因为将API令牌存储在localStorage或cookie中是一种常见的做法。 - Konrad

-3

公钥密码学可用于防止任何形式的入侵。此外,可以使用数据完整性检查(如CRC或哈希)来确保数据由服务器验证。


5
PKI 并不能在所有情况下都有所帮助。如果攻击者可以更改内容,那么他们也可以轻松地更改哈希值。但哈希值可以帮助检测无意中的更改(“损坏”)。 - Olli

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