我需要开发一个Web应用程序,将长时间离线功能。为了使这是可行的,我不能避免保存敏感数据(个人数据,但不是那种只存储散列的数据)在本地存储。
我接受这是不推荐的做法,但给予一点选择我做以下保护数据:
>使用stanford的javascript加密库和AES-256对所有进入本地存储的内容进行加密
>用户密码是加密密钥,不存储在设备上
>通过ssl从单个受信任的服务器提供所有内容(在线时)
>验证使用owasp antisamy项目进入和离开服务器本地存储的所有数据
>在应用程序缓存的网络部分中,不使用*,而只列出与受信任服务器连接所需的URI
>一般试图应用OWASP XSS作弊表中建议的准则
我明白,魔鬼通常在细节,并知道有很多怀疑本地存储和基于javascript的安全一般。任何人都可以评论是否有:
>上述方法的根本缺陷?
>任何可能的解决方案这样的缺陷?
>当html 5应用程序必须长时间离线时,是否有更好的方法来保护本地存储?
感谢任何帮助。
解决方法
嗯,这里的基本前提是:不,它不安全。
基本上,你不能在JavaScript中运行crypto:JavaScript Crypto Considered Harmful。
问题是,你不能可靠地获得加密代码进入浏览器,即使你可以,JS不是设计让你安全地运行它。因此,直到浏览器具有加密容器(加密媒体扩展提供,但是为了DRM的目的而被反抗),将不可能安全地进行。
至于“更好的方式”,现在没有一个。你唯一的选择是以纯文本存储数据,并希望最好的。或者根本不存储信息。无论哪种方式。
要么,或者如果您需要那种安全性,并且需要本地存储,请创建自定义应用程序…