这个问题在电脑浏览器上很难被利用,原因是:hacker很难在受害者机器上抓到这个包,一般是通过xss之类的漏洞,一般的正规网站很难在oauth步骤插入带有xss的页面,另外我记得在oauth的协议上是可以在客户端浏览器写入一个cookie的,第三方app在接受到authentication的token后还需要验证client的这个csrf cookie,所以即便这个link被泄漏给了hacker,hacker机器上没有这个cookie,也执行不了攻击,这个是oauth的标准安全用法,我不清楚微信的oauth是否也要求做到这一点了。另外还有个保护,这个第一步的authentication token只能用一次,除非hacker能阻止受害者把这个url转给app后台,否则hacker是不能再次使用这个token的。(具体实现中很多网站的开发没有加入csrf token cookie的写入和验证,因此如果能拿到第一步的link,后台没有校验cookie的情况下,可能被利用,尽管机率较小)
oauth2网页授权被伪造(请求)通过抓包的方式,在用户A点击授权按钮后,截取授权构造链接,例如: GET /connect/oauth2/authorize?appid=APPID&redirect_uri=URL&response_type=code&scope=snsapi_userinfo&state=STATE& uin=MTkyNTY5NzYw&key=73215c3bec983c8b62b54a3648dac9b226d106621760e6317fbfeea1109f2e32840aadf999fc88ff823981c9659e5770c7abbd6e734593e318ce05e106587f225f8d9bd828962e419f81b82c90afd230&version=62070158& pass_ticket=IzQKVTFVc%2BBx4kczrgOOk%2FSbC9PQuOccDtZVVEZB%2BHU%3D HTTP/1.1 将此链接发送给其他微信号。其他用户在向微信服务器发送授权确认时,篡改链接。这样就能在其他微信(pc端)伪造出用户A的授权请求。 三方服务器得到的CODE和token都是篡改钱用户A的openid和token。 这给我们基于oauth2授权获得openid 进行身份辅助认证造成了极大的困扰。 请尽快给出解决方案。
2023-07-14