gpt4 book ai didi

android - 服务器端为 Android 应用程序存储 token 的最佳做法是什么

转载 作者:行者123 更新时间:2023-11-29 16:02:18 26 4
gpt4 key购买 nike

回答这个问题:What is the most appropriate way to store user settings in Android application ,如果我在共享首选项中存储了一个身份验证 token ,使用私有(private)设置,服务器应该如何处理这个 token ?也就是说,

(1)token的有效期应该是多久?

(2) 如何确保其他设备没有尝试使用此 token ?

最佳答案

(1) How long should the token be valid?

这可能取决于您要实现的功能类型。有些应用程序每次都使用一次性 token ,另一些应用程序是基于 Activity 的(例如,如果您在一段时间内不使用它,它就会过期),其他应用程序永远不会过期,除非有人手动操作(这将是 Twitter's 案例)。这可能取决于您的信息的敏感程度,显然,如果您正在管理银行/汇款,安全应该是您的首要任务,并且较短的有效期可能会有所帮助。

(2) How can I ensure that another device is not attempting to use this token?

这也可能取决于您自己的服务器实现,即您选择实现它的方式。请记住, token 是由远程服务器生成的随机字符串,您需要保留某种数据库来存储发出的 token 到经过身份验证的用户的映射。当您想使 token 过期时,只需将其从数据库中删除,这样您就可以使数据库保持最新状态,同时您还可以确保不再使用旧 token 。只要攻击者无法创建有效 token ,该 token 就可以(就安全性而言),该 token 是已发出的 token ,存储在您的数据库中并且是最新的(即未过期)。

通常,一个至少 16 字节长的 token 是用一个健壮的密码系统生成的(java.security.SecureRandom/dev/urandom 等) ) 被认为足够安全,可以用作身份验证系统。

为了避免其他用户伪造其他用户的token,这个auth token通常是这样生成的:

  1. 在服务器端生成一个 key (我们称它为 S),它是一个至少 128 位的序列,由一个强大的加密系统生成(java.security.SecureRandom/dev/urandom 等)。
  2. token 应包含颁发时间 (T)、用户名 (N) 和完整性检查(类似于校验和) 在 NT 上计算,并用 S 键控。
  3. 由于服务器是唯一知道 S 的服务器,它可以验证请求的 token 并确定它是真实的还是伪造的(因为它也基于用户名)。

我认为这些链接可以帮助您:

关于android - 服务器端为 Android 应用程序存储 token 的最佳做法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23120969/

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