我在网上开了一本升级簿。为了保持学生数据的私有性,我通过https传输所有数据。
现在,我想使用localStorage来避免冗余计算和服务器请求。然而,根据HTML5规范,本地存储是未加密的。
这里有处理用户期望的行业标准吗?我可以想象这样的提示:“您想使用本地存储吗?它将使一切变得更快,但如果您的计算机受损,学生数据可能被窃取。如果这是一台公用计算机,请选择”否“。”
UX方面有什么趋势?
发布于 2011-11-30 00:14:25
局部存储是web应用程序可以使用的一个相对较新的特性,但是已经出现了某种“行业标准”或最佳实践。考虑到您的情况,OWASP 5备忘单指出:
底层存储机制可能因用户代理而异。换句话说,您的应用程序所需的任何身份验证都可以由具有本地权限的用户绕过到存储数据的机器上。因此,建议不要在本地存储任何敏感信息。
不管原始页面是通过http:或https:传递的,本地访问机器的权限(或网站中的XSS缺陷)都可以提取存储在其中的信息。所以,简单地说,你不应该把任何敏感的/私人的信息。
我不知道任何关于本地存储的机密性的普通用户确认消息文本,但是您的文本非常清楚。但是,我还是建议不要将敏感数据放在localStorage中。
免责声明:我是HTML5备忘单的共同作者。
发布于 2011-11-30 04:50:16
@Krzysztof Kotowicz有一个很好的答案。我同意他的建议。
对于真正想在本地存储敏感信息的web应用程序来说,另一种可能是以加密的形式存储它。客户端应用程序可以对其进行加密和身份验证(使用对称密钥加密算法和消息身份验证算法),存储加密版本;为了读取数据,客户端软件可以检查MAC和解密。如果采用这种方法,避免将对称密钥存储在客户端本地存储上是非常重要的。相反,密钥应该持久化地存储在服务器上;客户端可以查询服务器的密钥,并且只将密钥存储在内存中,而不是存储在持久存储中。
但是,在本地存储中加密数据有许多缺点和限制,这可能使其在许多设置中没有吸引力。例如,它防止在断开连接模式下使用应用程序。出于这些原因,@Krzysztof Kotowicz关于避免将机密或敏感信息存储在本地存储中的建议可能是大多数web应用程序的最佳建议。
发布于 2011-12-02 15:03:35
我是第二个D.W.的建议。
您可以考虑开发通常称为“防主机应用程序”或“零知识web应用程序”。它看起来和行为就像一个普通的web应用程序,但是所有的用户数据在上传之前都是由浏览器自己在本地加密的。加密进程的密钥是一个密码,它从未被发送或保存到服务器。因此,除了用户自己之外,没有人可以访问数据。
免责声明:这可能是一个有偏见的建议,因为我是Clipperz的联合创始人,一个使用这种方法的在线密码管理器。
您可以在Clipperz网站上阅读更多关于零知识web应用程序的体系结构的信息。如果您决定自己编写,您可以使用Clipperz的密码原语Javascript库 (AGPL许可),也可以使用来自斯坦福的另一个密码库。
https://security.stackexchange.com/questions/9285
复制相似问题