cordova 使用localStorage存储数据的安全性如何?

o2g1uqev  于 2022-11-15  发布在  其他
关注(0)|答案(4)|浏览(235)

我的应用需要登录,我有Remember username and password能力。用户名和密码存储在
'用户名',用户名);
这种存储用户名和密码的方式有多安全?我担心的是,特别是在Android上,其他应用程序是否可以访问数据并获取登录信息。
这个应用程序是针对iOS和Android的,我使用的是PhoneGap 2.9

6vl6ewon

6vl6ewon1#

LocalStorage在正常情况下只能由您的应用访问。它的安全性与特定平台(iOS、Android)上的沙盒一样,能够保护您的应用数据不被其他应用读取。
有时,沙盒并不像您预期的那样强大,例如在以下情况下:

  • 设备已获得root权限或已越狱
  • 制造商未能提供安全更新或用户没有更新
  • 攻击者可以物理访问该设备,例如如果该设备被盗。

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

存储密码哈希值如何?

对于服务器端应用程序,这是一个很好的主意,因为它们在受保护的环境中运行(具有访问控制的数据中心,负责安全更新的系统工程师)。
另一方面,手机很容易被盗,用户通常不会或无法安装安全更新。
如果哈希值不是salt值,那么在得到哈希值的情况下,使用彩虹表很容易得到明文密码;如果哈希值是salt值,那么很容易得到简单密码的明文密码;而且,很容易生成不安全的密码哈希值。
解决方案:存储随机生成的访问令牌:无论密码多么简单或复杂,都不可能通过查看令牌来获得明文密码。

TL;DR

如果您使用凭据针对某种API服务进行身份验证,则不应**将密码和用户名存储在本地,即使是在iOS钥匙串等安全存储中。
相反,您应该只存储从该API获得的随机生成的令牌
不是密码哈希!
)(类似于将会话ID存储在cookie中而不是用户/密码组合中的概念)。

  • JWT
  • 开放验证
  • 对于 JWT :是的,它不是完全随机的,而是经过加密和/或签名的。但是没有办法从中推断出任何关于密码的信息。*

这样你就可以确保真实的的凭据永远不会被泄露,即使沙箱无法保护数据或手机被盗。

wyyhbhjk

wyyhbhjk2#

每个应用程序在PhoneGap中使用自己的webview,localStorage只能在该webview中访问。
编辑:我仍然会考虑哈希密码。

hi3rlvi2

hi3rlvi23#

将密码保存在localStorage中并不安全。如果您使用PhoneGap,请尝试将用户名和密码保存在iOS Keychain中。https://github.com/shazron/KeychainPlugin

ars1skjm

ars1skjm4#

每个不同的cordova应用程序就像不同的网页浏览器,只能访问它们自己设置的数据或localStorage数据,因此其他应用程序无法访问您自己的应用程序设置的localStorage数据。同时,如果您想验证用户身份,请考虑使用jwt访问令牌,而不是在设备上存储实际的原始用户名或密码。

相关问题