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