gpt4 book ai didi

android - Android 上的用户身份验证 - 安全实现

转载 作者:太空狗 更新时间:2023-10-29 14:00:06 25 4
gpt4 key购买 nike

到目前为止,我一直主要为 Android 创建较小的应用程序和游戏,但现在正在创建一个有点大的应用程序,它有很多用户和比高分更敏感的数据。

我通常的方法是为所有用户创建一个表,并使用密码,使用 HTTP(S) 调用通过简单的登录屏幕进行身份验证,仅此而已。

尽管如此,我还是想针对此应用改进一些方面:

安全传输

如果我想对用户的密码进行加密,需要在哪里进行呢?在设备上,甚至在发送之前? (如果网络不安全,比如公共(public) WiFi 热点)或者在服务器上更好,在将其写入数据库之前?还是我应该只使用 SQL 的加密?

自动登录

我希望用户能够在注销之前保持登录状态 - 我该怎么做才最好?不仅在安全方面,而且在用户体验方面也是如此。

我的研究表明,使用 AccountManager 最好保存用户名和密码,并在应用程序启动时自动进行身份验证。还有什么吗?我在这里遗漏了任何安全风险吗?

访问控制

通常,我只希望应用程序发出的每个调用都是有效的,因为用户在未登录的情况下只能访问登录屏幕以外的任何内容。但是我如何最好地验证用户的请求以确保它不是攻击者?我不能只在每次请求时发送用户名/ID,所以我可能需要像每次登录时生成的 session token 一样?或者有更好的方法吗?

还有什么我忘了考虑的吗?

最佳答案

我建议您不加密而是通过 https 传输密码。其他方式是实现 asymmetric encryption在您的应用程序中并使用您将从服务器收到的公钥加密密码。

在服务器端,我会使用一些带盐的哈希算法来哈希密码。并且只存储散列和盐。当用户登录时,您可以用相同的方式散列传入的密码并检查散列是否相等。

要进行自动登录,您需要使用 token 对授权用户的所有请求进行签名。登录成功后,您将从服务器收到的 token 。此 token 可以存储在 Keystore 或仅供此应用程序访问的特殊存储中。

可以通过将所有请求参数和 token 的校验和附加到请求附加参数来实现签名。

此外,我建议您考虑未经授权的克隆应用程序,这些应用程序可能会伪装成您的应用程序并调用您的服务器端 API。

关于android - Android 上的用户身份验证 - 安全实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36341716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com