【问题标题】:Saving user credentials on device for android在设备上为 android 保存用户凭据
【发布时间】:2014-08-22 18:09:08
【问题描述】:

在设备上为 Android 应用保存用户凭据的最佳和最安全的方法是什么。 我正在考虑加密数据并将其保存在首选项中。

有没有类似iOS钥匙串的方法来保存密码?

【问题讨论】:

  • 您应该将Access Token加密存储在您的设备上,避免保存用户名和密码。
  • 那是什么?有什么例子???
  • 当用户第一次使用凭据(登录名和密码)登录时,您只需对凭据进行加密和编码并将其发送到您的服务器,然后服务器将为您提供唯一的@987654322 @ 要在服务器上进行将来可访问的查询,需要将用于服务器上所有未来查询的 Access token 保存在本地系统中(以加密形式)
  • 例如使用Facebook SDK 访问Facebook 功能。
  • 需要离线授权!!我们已经用于在线访问

标签: android security passwords


【解决方案1】:

最好的办法是根本不保存它们。在这种情况下,加密提供的安全性非常低,因为应用程序本身必须具有解密密钥,因此密钥和数据位于同一设备上。它只会阻止最不坚定的攻击者。操作系统级别的设备也好不到哪里去,因为任何有物理访问权限的人都可以轻松绕过它。

最好的办法是使用访问令牌。获取登录数据一次,将其发送到服务器进行登录,并让他们以 id 响应。在以后的请求中使用该 ID 来识别您自己。服务器应该记住谁与每个 id 相关联。服务器最好包含一个超时机制,在 X 时间后,ID 将失效,用户将需要再次登录。更安全的实现也会将其与设备的某些物理 id 匹配,例如 Android 设备 id,要求攻击者拥有设备或伪造这两条信息。

使用访问令牌而不是保存凭据可以通过几种方式保护用户。首先,攻击者将不知道用户密码,以防被重用于其他服务(例如他们的电子邮件)。其次,仅更改密码是不够的(因为安全服务会再次要求输入密码以更改密码),因此虽然帐户中的信息可能会受到损害,但用户可以通过使用密码来收回帐户来更改他们的密码。如果实际密码被保存并丢失,攻击者可以更改登录信息并将用户永久锁定在其帐户之外。

【讨论】:

  • 有没有办法像 iOS 的钥匙串一样存储?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-30
  • 1970-01-01
  • 2016-07-19
  • 1970-01-01
  • 1970-01-01
  • 2018-09-14
  • 1970-01-01
相关资源
最近更新 更多