本地存储的安全性如何?


33

问题确实说明了一切。我想提供服务,但我不想自己将任何数据存储在数据库中。有了最近所有有关黑客攻击的消息,在我看来,让客户完全控制其数据会更好。

问题在于存储的数据可能是敏感的。我要做的是...当客户访问该网站时,会出现一个问题,询问“您是使用个人计算机还是公用计算机”。如果它们在公共计算机上,则该站点将拒绝访问。

如果他们在个人计算机上,它将提示他们设置密码。然后,将使用此密码对他们的所有数据进行加密。现在显然这不是太安全。加密方法使用JavaScript,而密码使用纯文本格式,因此我认为,精明的用户可以在localStorage中找到密码并访问数据。

我觉得这不是什么大问题。如果您使用的是个人计算机,则发生这种情况的可能性很小,因为……其他人需要访问其计算机上的特定用户帐户,其他人需要了解该网站……其他人需要了解localStorage以及如何访问它。敏感数据绝不会损害其身份或其他许多方面。它只是记录了大多数人不希望公开发布的内容。

所以真正的问题是,localStorage是否足够安全?

另一个问题..擦除您的localStorage有多困难?我不希望用户不小心擦除其数据。

最后-甚至值得加密/解密其数据,就好像您拥有可以访问该站点的密码一样。


2
客户端JavaScript并不是进行加密的最佳场所。任何精明的用户都可以查看代码,然后破解您的加密算法,并对其进行加密,使其实际上不执行任何操作,仅接受加密的密码。

Answers:


10

根本不存储密码,甚至不在本地存储中也如何?您可以使用密钥派生功能从密码中获取密钥。使用盐和合理数量的迭代,这应该是相当安全的。


如果将密码提交给PHP,然后在后台生成密钥,那会更安全吗?
JasonS 2011年

否。密码是首先在客户端上提供的。通过将其发送到服务器,您增加了被盗的风险。在JS中执行密钥派生可将客户端的秘密保密。在每种情况下,您都应该在那之后不久忘记PW。但我认为这仍然没有意义-请参阅我的答案。

许多黑客都很聪明……使用Lib bCrypt。
Eddie B

2

将JavaScript与本地存储一起使用最大程度地安全(您的服务器加上浏览器和服务器之间的连接)。

如果有人设法修改您的服务器并提供不同的JS文件或修改(在传输过程中)从服务器发送到客户端的JS文件,则他们可以对所需数据进行任何处理。

另外:由于数据在客户端上,因此您无法采取任何措施来保护数据。在普通服务器上,您可以例如限制访问频率(例如,远程密码安全:在10分钟内仅读取1个密码)。如果数据在客户端上并且攻击者可以操纵所有与数据一起使用的代码,那么所有这些都是无用的。

毕竟,即使使用本地存储,您也需要保护Web应用程序!为什么要在(希望)安全服务器上运行服务器?如果不是,为什么不使用客户端上安装的本地程序呢?


您是否不认为主要的安全问题是该设备是否被他人使用或被盗?

2

如何从服务器获取用于解密localStorage数据的密钥?

它可以像这样工作:

  • 建立会话后,服务器将返回一个密钥。
  • 该密钥用于加密/解密localStorage中的数据。
  • 当用户离开页面时,密钥会丢失,从而阻止其他人读取localStorage中的内容。

这仅应在用户建立会话后才允许访问。


3
但是,这不能离线访问数据(这似乎是localStorage的主要用例)。要离线使用此方法,您需要保留密钥。
蒂莫西·李·罗素

0

通常,清除本地存储并不困难,但这取决于浏览器。不过,您确实需要使用浏览器开发人员工具(萤火虫,Webkit内容等)。

就像您想到Cookie一样。您永远不要将敏感数据保存在本地存储中。密码,信用卡号等等。

您可以始终执行一些功能以在x闲置一段时间后清除本地存储,但这并不能解决安全问题。它就像一个自动会话过期。同样的问题也适用,如果某人离开计算机,然后其他人在会话期满之前就坐下了,他们就可以做事。


0

两个问题:

  1. 如果您存储纯文本密码,然后依赖于不太可能被发现的事实,那只是出于默默无闻的安全性。只是以明文形式存储数据,并基于相同的假设(仍然不安全,但没有错误的安全感)

  2. 在大多数浏览器中,如果人们清除缓存,他们也会删除其localStorage内容。人们不会期望在擦除历史记录和缓存时丢失重要数据。

我认为您超出了localStorage的用途。如果您想使用与Web应用程序兼容的本地数据库,则可以看看CouchDB长沙发应用程序

但不要存储密码。


0

您可以使用javascrypt。向用户询问将成为加密/解密密钥的密码

您不需要存储密码,但是每次用户打开页面时都要求输入密码。
如果用户需要,可以存储它,现在可以存储它。

但是然后加入stivlo的评论,那又如何:

  1. 多设备访问
  2. 后备
  3. 忘记密码
  4. 太容易清除缓存

我认为您应该重新考虑推理的开始。一个快速的结论是,仅由于某些近期和令人震惊的事件而避免出现云。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.