猿问

是否可以将本地存储视为安全的?

我需要开发一个可长期离线运行的Web应用程序。为了使它可行,我无法避免将敏感数据(个人数据,而不是您将仅存储散列数据的类型)保存在本地存储中。

我接受不推荐这样做,但是我几乎没有选择要执行以下操作来保护数据:

  • 使用斯坦福javascript密码库和AES-256将所有内容都加密到本地存储中

  • 用户密码是加密密钥,未存储在设备上

  • 通过ssl从单个受信任的服务器提供所有内容(在线时)

  • 使用owasp antisamy项目验证往返服务器本地存储的所有数据

  • 在appcache的网络部分中,不使用*,而是仅列出与受信任服务器连接所需的URI

  • 通常,尝试应用OWASP XSS备忘单中建议的指南

我很欣赏魔鬼在细节上的细节,并且知道人们对本地存储和基于JavaScript的安全性普遍持怀疑态度。任何人都可以评论是否存在:

  • 上述方法的根本缺陷?

  • 有什么办法可以解决此类缺陷?

  • html 5应用程序必须长时间离线运行时,还有什么更好的方法来保护本地存储?

谢谢你的帮助。


泛舟湖上清波郎朗
浏览 878回答 3
3回答

皈依舞

作为对该主题的探索,我有一个名为“使用Web密码学API保护TodoMVC”的演示文稿(视频,代码)。它使用Web加密API通过密码保护应用程序并使用密码派生密钥进行加密,从而将加密的待办事项列表存储在localStorage中。如果忘记或丢失密码,将无法恢复。(免责声明-这是一个POC,不用于生产用途。)在其他答案中,这仍然容易受到客户端计算机上安装的XSS或恶意软件的影响。但是,当数据存储在服务器上并且正在使用该应用程序时,任何敏感数据也将位于内存中。我建议脱机支持可能是引人注目的用例。最后,对localStorage进行加密可能只会保护数据,使其免受对系统或其备份具有只读访问权限的攻击者的攻击。它为OWASP十大A6敏感数据公开项目增加了少量的纵深防御,并允许您回答“这些数据是否长期以明文形式存储?” 正确地。
随时随地看视频慕课网APP
我要回答