
最近公司推了一个基于微信浏览器的运营活动,大体内容就是用户可以通过分享为好友加分,所得分数用于抽奖游戏,奖品包含现金红包及手机等实物。 结果在活动推出的头几天就遭遇大范围的刷奖,后台收到模拟请求将近 5000 次 /秒,请求中 UA 不变, IP 及用户 id 动态变化( id 均为有效 id )。 请问除了通过访问频次将 id 加入黑名单之外(这个可能误伤),还有什么好的方式来预防类似的刷奖行为吗?求各位大神赐教!
1 kungfuchicken 2016-07-16 16:15:18 +08:00 1. 每个分享连接都计算一个独立 hash 入库(每个用户分享 N 次,这个用户就有 N 个不重复的 hash 入库),把 hash 作为分享 URL 一个参数,加分判断时检查 hash 存在且对应传入用户 id ,且才能加分。 2. 上 IP 频率黑名单,发现有问题的请求不要给错误信息,前台给正常信息但是不加分(以免让刷分者发现异常),然后在后台记录流水,即使有误伤正常用户,通过流水也能正常用户补分。 |
2 046569 2016-07-16 16:23:50 +08:00 |
3 king14 OP @046569 有想过通过用户行为来区分,比如抽奖请求和领奖请求之间必须经过查奖这一过程,不过如果攻击者模拟的时候同样按照这个顺序发送请求会怎么办呢 |
4 king14 OP @kungfuchicken hash 值放在 url 里的话攻击者也可以拿到,这样的请求到后台也会是有效的吧 |
5 notgod 2016-07-16 16:35:47 +08:00 真是的 直接内定了 奖品都给我吧 省得麻烦 |
7 magicsilence 2016-07-16 16:43:03 +08:00 上滑动验证 |
9 allenhu 2016-07-16 16:45:07 +08:00 via Android 只能说明你流程有漏洞 |
10 MrMario 2016-07-16 16:46:13 +08:00 via iPhone 找阿里的风控,加个滑动验证 |
11 king14 OP |
13 frozenshadow 2016-07-16 16:58:32 +08:00 via Android 请看我之前的一个帖子。。。。手机不方便翻 |
14 046569 2016-07-16 16:59:36 +08:00 @king14 比如抽奖动画 4 秒,他查询的时候是否低于这个时间,低于则判定有问题. 不要设定单一规则判断,而是多条规则组合出一个阈值.比如此人输入查询页面缺乏 referer ,又频率过快,超过正常人水平,即可判定是外挂. |
15 shiny 2016-07-16 17:11:48 +08:00 用微信的 oAuth 验证唯一用户,刷奖成本就上去了 |
16 won 2016-07-16 20:08:09 +08:00 自己公司开几台服务器用同样方式对刷,稀释奖池 |
17 300 2016-07-16 21:12:51 +08:00 还真能抽到 il||li (OдO`) il||li 我以为抽奖都是骗人的。。。。 |
18 xman123 2016-07-16 23:46:08 +08:00 某东上的一个 API 接口: http://wxlink.jd.com/market/api/10570 |
19 dream7758521 2016-07-17 08:06:52 +08:00 via Android 后台直接调数据库,指定用户中奖 |
21 maxsec 2016-07-17 12:59:52 +08:00 via iPad 验证码,点击式的,滑动式的, |
22 shiny 2016-07-17 15:08:44 +08:00 via iPhone @king14 要是我做,就为分享后的好友加个激活条件,比如关注指定公众号,体验或消费或验证手机等才计积分,直接就计分了是容易被刷。 |
23 wojiaodaxiaxia 2016-07-17 20:49:45 +08:00 via Android t/233173 不知道这个有用没 |
24 lianxiaoyi 2016-07-18 09:17:05 +08:00 @kungfuchicken 跟我一样 ...喜欢埋坑......我一般都是地址里面会带上 token ... key 等等字段....其实里面内容就是 base64 的"是不是该找条狗冷静一下",,,,"且撸且珍惜".....真正内容用一些不起眼的 key 代替 |