最近做了个不大点的微信活动,上线之后,出现了无穷尽的微信刷子,这些刷子的openid都不一样,昵称也格式相似,通过记录IP发现,IP都是相同的,一个IP有上千个微信用户,我很是费解,不知道现在是不是有什么黑科技可以伪造这点了;我先说下我的流程 1,用户授权,session记录用户openid 2,用户参加活动,完成活动一系列指定操作,完成活动,将用户信息录入数据库 3,用户完成活动,分享朋友圈,朋友圈朋友进入授权session记openid,,帮用户完成指定操作 4,朋友完成操作后,用户可抽奖 大体一看,没什么漏洞,上线之后,被刷子们刷懵逼了 前端与后台总给有两个个接口的交互: 1,用户完成一系列活动操作后请求后台,后台录入数据,暂且叫做接口一 2,朋友圈朋友完成操作接口,暂且叫做接口二 3,用户本身抽奖,暂且叫做接口三 下面说下刷子走的流程: 1,刷子要么是黑科技要么是真有很多个微信号,通过微信授权接口来到活动首页,满足session存储openid的要求,只一次就够了!! 2,刷子授权之后直接走接口一,可以快速的将自身信息录入我的数据库,直接跨过前端活动的一系列操作 3,刷子的好友授权之后直接走接口二,完成朋友操作; 4,刷子抽奖 我的解决办法: 1,接口一 增加IP次数的调用限制 增加单用户调用接口限制(适中 既能满足普通用户需求也要让刷子难受) 2,接口一 增加接口调用频率限制(同一用户在一定次数内每隔10秒可以调用一次,超过一定次数,间隔时间翻倍) 3,最主要的,刷子为什么可以直接调用接口,因为服务端并没有记录用户的活动轨迹,我们需要做的是:用户必须按照指定的操作顺序才可以调用接口一,少一步或跳步都不行;我的解决方案是:直接在服务端记录,不让前端通知,这就需要把活动系列操作分开来走,用户授权进入记录值1 用户完成A操作记录2 依次类推,这样刷子即使发现这个逻辑,他也必须一步一步的访问,增加她的时间代价 4,朋友圈进入的用户 也需要增加记录,必须记录进入首页 完成操作X,才允许完成最终操作;同时增加可完成的操作间隔,禁止无限制的操作 以上就是我的解决方案,但其实还是有漏洞,刷子还是可以继续刷,但是这样刷子要深究我的判断机制,最后判断出机制,开始刷的时候,所花费的时间,操作的复杂度,也不会比正式用户少多少; |
|
来自: CoCO-Ebook > 《数据库》