第三方账号登录,没有验证码,后台如何防止被恶意POST请求刷账号


  • 背景和原理:

从新浪微博等第三方平台使用OAUTH2.0快速登录时,授权成功后前台可以获取到用户在第三方平台的唯一ID,然后向后台POST这个ID和其他信息,后台就根据这个ID生成一个新的账号。

  • 问题:

这个ID的真实性我们后台是无法验证的,有什么比较好的方法可以防止有人频繁伪造POST请求来注册大量账号呢。

  • 限定条件:

正常注册时,当然是用注册码来防止机器注册,但是第三方账号登录,不能让用户输入验证码

知道这个问题其实不可能完全解决,无论如何机器都可以模拟前端的行为,除非代码不可见,黑客们又猜不出来方法,只能尽量用比较简单的方法增加他们的麻烦,实在解决不了就只能限制每个IP每天的注册次数了

python django 新浪微博 JavaScript oauth

萌萌天使酱 10 years, 8 months ago

oauth登录成功后把 access_token 也传给服务器……,用 access_token 调用一下获取用户信息的接口验证 access_token 是否有效就行。

ransoma answered 10 years, 8 months ago

同一个第三方ID只能生成一个账号就好。。。。

☆夜D猫☆ answered 10 years, 8 months ago

这个简单,只需要判断下获取到的openid的request的url是不是来自官方就好,另外通过post获取这个第三方登录逻辑应该有更好的方式实现

众神垂爱飞舞 answered 10 years, 8 months ago

Your Answer