使用localStorage存储数据有多安全?

Pub*_*cus 15 security local-storage cordova

我的应用需要登录,而且我有Remember username and password能力.然后存储用户名和密码

localStorage.setItem('username',username);

这种存储用户名和密码的方式有多安全?我特别在Android上担心的是,如果其他应用程序可以访问数据并且可以获取登录信息.

该应用程序适用于iOs和Android,我正在使用PhoneGap 2.9.

ste*_*eak 17

LocalStorage在正常情况下只能由您的应用访问.它与特定平台(iOS,Android)上的沙箱一样安全,能够保护您的应用程序的数据不被其他应用程序读取.

有时沙箱不像您期望的那样强大,例如在这些情况下:

  • 该设备已植根或越狱
  • 制造商未能提供安全更新或用户没有更新
  • 攻击者可以物理访问设备,例如,如果它被盗.

如果攻击者可以访问明文密码和用户名,他们也可以尝试使用其他帐户(而不仅仅是您的服务).因此,如果您的应用的用户对多个服务使用相同的密码,则攻击者也可以访问它们.

那么存储密码哈希呢?

对于服务器端应用程序,这是一个好主意,因为它们在受保护的环境中运行(具有访问控制的数据中心,系统工程师负责安全更新).

另一方面,电话很容易被盗,用户通常不会或不能安装安全更新.

如果散列没有加密,那么如果你得到哈希,很容易使用彩虹表获得明文密码.如果哈希被腌制,则很容易获得简单密码的明文密码.此外,生成不安全的密码哈希非常容易.

解决方案:存储随机生成的访问令牌:无论密码多么简单或复杂,通过查看令牌都无法获得明文密码.

TL; DR

如果您使用的凭据进行身份验证对某种API服务的,你应该保存用户名和密码在本地,甚至在安全存储器中,如iOS的钥匙串.

你应该做的只是存储一个从API获得的随机生成的令牌(不是密码哈希!)(类似于在cookie中存储会话ID而不是用户/传递组合的概念).一种可能性是使用OAuth.

这样,即使沙盒无法保护数据或手机被盗,您也可以确保真正的凭据永远不会被泄露.

  • 在2016年仍然有效.尽可能避免保存用户凭证,甚至在安全密码存储中保存.在后端生成随机身份验证令牌. (3认同)

Fre*_*ers 4

每个应用程序在 PhoneGap 中使用它自己的 Web 视图,本地存储只能在该 Web 视图中访问。

编辑:我仍然会考虑对密码进行哈希处理。