Oauth CSRF
https://www.jianshu.com/p/c7c8f51713b6
https://www.ibm.com/developerworks/cn/web/1102_niugang_csrf/index.htmla
Oauth的第三方登录
- 为什么要有state参数,假设不带state参数,用户甲想在A网站绑定QQ,跳转QQ页面地址
https://graph.qq.com/oauth2.0/show?which=Login&display=pc&response_type=code&client_id=222048&redirect_uri=[url]
- 用户点击授权后,QQ会按照跳转地址返回code。这个过程就有问题了,对于QQ来说,他只知道是由A网站发起的授权,这个时候,如果攻击者乙也向QQ发起请求,假设本来返回给网站甲用户的code是1,返回给乙用户的是2。攻击者将两个的code互换后给网站A,那么网站A的授权信息变成了攻击者可以使用自己的QQ账号来登录网站A。这是很危险的
- 解决方法:在请求页面加入state,将这个state放入当前用户session,在请求时候将这个state传给QQ,QQ回调的时候将这个值也带给网站A,服务器只需要取出session中的值,与返回的值进行比对
http://www.mamicode.com/info-detail-2353095.html