背景和原理:
从新浪微博等第三方平台使用OAUTH2.0快速登录时,授权成功后前台可以获取到用户在第三方平台的唯一ID,然后向后台POST这个ID和其他信息,后台就根据这个ID生成一个新的账号。
问题:
这个ID的真实性我们后台是无法验证的,有什么比较好的方法可以防止有人频繁伪造POST请求来注册大量账号呢。
限定条件:
正常注册时,当然是用注册码来防止机器注册,但是第三方账号登录,不能让用户输入验证码
知道这个问题其实不可能完全解决,无论如何机器都可以模拟前端的行为,除非代码不可见,黑客们又猜不出来方法,只能尽量用比较简单的方法增加他们的麻烦,实在解决不了就只能限制每个IP每天的注册次数了
oauth登录成功后把
access_token
也传给服务器……,用access_token
调用一下获取用户信息的接口验证access_token
是否有效就行。这个简单,只需要判断下获取到的openid的request的url是不是来自官方就好,另外通过post获取这个第三方登录逻辑应该有更好的方式实现
同一个第三方ID只能生成一个账号就好。。。。