关于golang token的问题

本人最新在用golang的gin框架写一个restful服务器,在使用jwt-go 生成token时有了一个疑问,就是生成token后,将token返回给客户端,然后客户端将token放在headerds的Authorization中,我考虑到有这么一种情况,就是用户的userID为1,然后login后生成token,该token肯定是合法的,然后客户端拿到这个token,将cookies或http头部的userID改为2,再和token一起带过来这样进行操作,服务器如何判断呢?这个和重放攻击好像有有些不一样,重放攻击是拿到数据包重新访问一次,而这种情况是token是正确的,但带过来的userID是错的
1、是不是使用cookie的httpOnly 字段去限制客户端访问?
2、或者说每次都进行签名?那这样相当于每次访问都要计算一次,计算量很大?
3、还是说一定要使用非对称密钥,将http变为https才安全?
本人服务端新人,希望各位能够解答一下我的疑问

阅读 7.5k
3 个回答

你为什么要前端传userID呢,你的token应该是对应userID的。
不要用户传,这个是你服务端自己记录对应关系的,拿到合法的token,你就应该知道是哪个用户。

不用担心。jwt分发前会进行签名。拿到jwt后校验签名。签名不正确会拒绝。

token 里面应该要包含很多信息的,比如 用户ID,客户端类型(ios,android,pc,mweb),过期时间等等,前端为什么要关注用户的ID啊,既然选择了token,就用token交互呗,gin 可以使用middleware,你在middleware里面解析token,拿到user_id 等等不就可以了嘛,这样是比较正规的

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