书接上回说道: oauth授权的简单理解和阐述
state的状态码有什么用
首先我们要仔细思考下,授权过程冲洗网站拿用户数据的逻辑
我们注意到,从qq运营商返回回来才拿到a用户的用户凭证(code),那么问题来了,我们怎么知道,这个用户凭证(code)是不是用户a的呢?玩意是其他人的呢,code的签署和颁发对于冲洗网站来说是完全不透明的,如果单单是冲洗照片的网站自然没什么,顶多是看到了别人的照片,但如果是授权登陆的功能呢?是不是直接就把账号绑定在其他人的qq上了?
CSRF攻击
CSRF 概念:CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者 Session Riding,通常缩写为 CSRF 或者 XSRF,是一种对网站的恶意利 用。
尽管听起来像跨站脚本(XSS),但它与 XSS 非常不同,XSS 利用站点内的信任用户,而 CSRF 则通过伪装成受信任用户的请求来利用受信任的网站。
与 XSS 攻击相比,CSRF 攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难 以防范,所以被认为比 XSS 更具危险性。
这里就存在csrf攻击,攻击者可以通过拦截获取自己的code让被攻击者点击回调的code链接,从而直接将自己的网站账号绑定在攻击者的qq上,因为网站压根不知道这个qq账号是不是你的。
state防范csrf攻击
oauth授权给了一个state的参数,这个参数,授权服务器不会做任何处理,冲洗网站在发送state之后,授权服务器在回复code的同时会原封不动的把state发送给冲洗网站,由于这个state是冲洗网站可知的,但是攻击者是不可知的,所以可以用这个判定使用者的身份,只有验证通过后,再进行相应的处理。用于预防伪造攻击。
总结
魔高一尺,道高一丈,只有充分理解相应都流程才能提升自己