内容目录
背景
我最近正好遇到这样子的需求,自己跟同事讨论一下,得出了一些结论,于是我就写下来方便其他遇到类似的问题。
需求
用户访问一个url,然后这个Url会调到公众号得到用户授权,然后获取openid,然后跳转到最终的展示页面。同事开发时候直接跳转了最终的展示页面,同时带了openid,却没有其他验证,我开始跑流程时候没有注意到这个逻辑,后面突然发现,你既然没有带任何验证,openid 又是固定,那么用户只要复制这最终的url,那么他后面就不需要任何授权。所以这个就一个非常巨大的安全问题。
解决方案
公众号回调接口时候,我们继续回调自己业务层,业务层生成token,返回对应最后落地页。
补充
跳转到落地页时候是一个接口,判断token是否有效,然后再生成cookie,设置过去。注意set-cookie 是不能夸域名的,我们最开始写cookie放在公众号回调里面,没有在对应的业务层的回调。开始因为可以302时候设置到跳转的域名里面,后面测试不可以,通过逻辑分析确实就不应该设置。
场景
- 公众号登陆,跳转到最终落地页
- 客户端已经登陆,跳转浏览器
- 第三方登陆,qq或者微信,原理类似