token在什么情况下会过期?

1.token用什么方式生成最安全?
2.服务器是怎么管理token的,怎么判断是否超出有效期?当用户不再有操作的时候开始计时吗?
3.登录的时候获取了token,后面涉及用户操作的请求都要携带token,如果被抓包得到token是不是可以进行虚假操作了?

阅读 15.4k
2 个回答

我们也刚好在解决类似的问题,以下是我们设想的准备去实践的方案,欢迎讨论,难免疏漏

  1. 安全都是相对的,没有什么最安全一说,要根据具体的业务、人力、开发成本等等去综合考虑。我们目前考虑的算法hash("sha256",user_id+timestamp+salt),timestamp是时间戳,salt是加密盐,这个不知道如何解释,反正你认为是增加破解难度即可,salt尽量是带有大小写字母、字符、数字的一个固定字符串

  2. 服务器生成token以后和token失效时间一起存储在redis里面,比如失效时间为一天86400秒,然后每次请求服务器端都会检测这个token是否失效,如果失效就响应token失效状态码,客户端获取到这个状态码以后调用更新token的接口,用老的token换取服务器端重新生成的token并本地存储。然后更严谨一点的话根据产品需求设定一个超时登录时间,redis里面可以直接给key设定超时比如一个月,redis.expire(key,expiration);然后登时间到了redis就会自动删除,避免僵尸用户一直占用redis存储。另外每次登陆都会重新更新一次token

  3. 目前设想的每个用户都会有一个唯一的token,所以就算被抓包也只是获取了这个用户的所有用户数据,并不算严重,这个就是我所说的相对安全,说白了就是我们没有更多的资源用来处理这个问题使他更安全,或许后续会更新

个人建议,仅供参考

现在哪有安全性可言

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏