新浪微博的[应用授权]功能允许应用在执行危险操作时强制要求用户通过微博帐号密码登录,而不是[应用授权]功能自动读取当前用户的新浪微博登录状态,这可以防止电脑被他人操作带来的危险。但[强制登录]功能可以通过修改授权页面的地址而被轻松绕过。
例如,点击新浪SAE平台(http://sae.sina测试数据.cn/)页面上方的登录按钮时,会转到新浪微博的[应用授权]页面。由于用户登录后可以直接修改SAE平台上应用的重要信息,所以在这里SAE平台使用了强制登录功能,即[应用授权]页面不会自动读取当前用户的登录信息(如果有),而是强制要求用户输入帐号和密码。
这里包含了[强制登录]功能的授权页面地址为:https://api.weibo测试数据/oauth2/authorize?client_id=2857799177&redirect_uri=http%3A%2F%2Fsae.sina测试数据.cn%2Fssl%2F%3Fm%3Dsso%26a%3Dweibo_callback%26sccb%3Dhttp%253A%252F%252Fsae.sina测试数据.cn%252F&response_type=code&forcelogin=true,位于最后的[forcelogin=true]就是用来控制[强制登录]功能,删除这个代码再按回车,应用授权就会直接直接读取用户登录信息并通过授权(如果该电脑已经成功的登陆过微博并选择了[下次自动登录],而很多用户都会勾选)
漏洞 证明:现在电脑上登录微博并选择[下次自动登录],然后打开[https://api.weibo测试数据/oauth2/authorize?client_id=2857799177&redirect_uri=http%3A%2F%2Fsae.sina测试数据.cn%2Fssl%2F%3Fm%3Dsso%26a%3Dweibo_callback%26sccb%3Dhttp%253A%252F%252Fsae.sina测试数据.cn%252F&response_type=code&forcelogin=true],可以看到页面依旧要求输入帐号和密码;将[&forcelogin=true]删除并重新加载页面,会发现已经登录上了。
1,正常登录需要强制输入用户名和密码。
2,删掉后则直接跳转(微博登录的情况下)
修复方案: 将强制登录的代码做 加密 处理。
查看更多关于新浪微博OAuth应用授权强制登录功能可被绕过 -的详细内容...