1.token用什么方式生成最安全?
2.服务器是怎么管理token的,怎么判断是否超出有效期?当用户不再有操作的时候开始计时吗?
3.登录的时候获取了token,后面涉及用户操作的请求都要携带token,如果被抓包得到token是不是可以进行虚假操作了?
1.token用什么方式生成最安全?
2.服务器是怎么管理token的,怎么判断是否超出有效期?当用户不再有操作的时候开始计时吗?
3.登录的时候获取了token,后面涉及用户操作的请求都要携带token,如果被抓包得到token是不是可以进行虚假操作了?
1 回答1.4k 阅读
2 回答997 阅读
1 回答1.2k 阅读
1 回答516 阅读✓ 已解决
1 回答1.1k 阅读
1 回答978 阅读
1 回答943 阅读
我们也刚好在解决类似的问题,以下是我们设想的准备去实践的方案,欢迎讨论,难免疏漏
安全都是相对的,没有什么最安全一说,要根据具体的业务、人力、开发成本等等去综合考虑。我们目前考虑的算法hash("sha256",user_id+timestamp+salt),timestamp是时间戳,salt是加密盐,这个不知道如何解释,反正你认为是增加破解难度即可,salt尽量是带有大小写字母、字符、数字的一个固定字符串
服务器生成token以后和token失效时间一起存储在redis里面,比如失效时间为一天86400秒,然后每次请求服务器端都会检测这个token是否失效,如果失效就响应token失效状态码,客户端获取到这个状态码以后调用更新token的接口,用老的token换取服务器端重新生成的token并本地存储。然后更严谨一点的话根据产品需求设定一个超时登录时间,redis里面可以直接给key设定超时比如一个月,redis.expire(key,expiration);然后登时间到了redis就会自动删除,避免僵尸用户一直占用redis存储。另外每次登陆都会重新更新一次token
目前设想的每个用户都会有一个唯一的token,所以就算被抓包也只是获取了这个用户的所有用户数据,并不算严重,这个就是我所说的相对安全,说白了就是我们没有更多的资源用来处理这个问题使他更安全,或许后续会更新
个人建议,仅供参考