使用 uuid 作为 token 的安全性问题

客户端登录后,生成一个 uuid 作为 token 并通过 token:user_id 的方式添加到 redis 缓存中。
在请求接口的时候,获取客户端传递过来的 token查找缓存获取 user_id 进而获取用户信息,处理请求。

那么问题来了,在这一过程中,如何验证 token 是否合法呢?例如:我也随机生成 uuid,然后将其作为 token 去请求接口,如果恰好命中了缓存中存在的 token,在有效期内就能用这个 token 去请求接口了!

而且我抓包看了几款应用,发现他们在请求接口的时候也只是传递了 token,并没有添加签名信息之类的。

阅读 13.4k
3 个回答

恰好命中了缓存中存在的 token?你知道这个概率是多少吗

可以看看 jwt 相关的知识,传递的 token 其实是由 payload,header,签名三者组成的,google搜了一篇文章,讲的还算清楚,可以看下http://blog.leapoahead.com/20...

uuid的最大特性就是:不可能重复。
拿到uuid(token)就可以认为是已授权。
为了安全起见,你也可以加一些别的验证。比如:登录校验成功后,往redis了记录的时候,同时保存一下客户IP
、UserAgent。下次有请求的时候,同时校验这两个。

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