06 May 2013
Scribble, a Jekyll theme
JWT(JSON Web Token)的疑问
JWT是否是安全的设计
###场景 客户端通过登录认证取得JWT,然后每次请求都带上此token来进行身份校验来进行诸如REST API的请求. ###问题 那么,我们假设攻击者通过执行JS脚本或者别的其它手段获得了用户的token,因此就可以凭借此token进行身份校验,做一切想做的事情
即使用户进行登出操作,攻击者依然可以通过token进行身份验证从而进行攻击
- 如果采用服务端对登出用户的token进行名单记录,是可以在一定程度上进行杜绝这个问题,但是这显然违背了JWT设计的初衷:无状态化
- 如果对token设置较短的生命周期,那带来的影响就是要么客户端频繁的需要用户进行登录操作,要不是客户端默默的刷新新的token。而攻击者获取到token后同样也可以进行token刷新
###现状 为了保护用户的token不被窃取,请采用https. 一旦token泄露,正如cookie-session机制也一样,都会被攻击者直接攻击,但这需要很高的成本.
一些其它的加强性措施如:
- 设备ID进行签名
- 额外参数校验
Til next time,
at 16:27