最近公司推了一个基于微信浏览器的运营活动,大体内容就是用户可以通过分享为好友加分,所得分数用于抽奖游戏,奖品包含现金红包及手机等实物。 结果在活动推出的头几天就遭遇大范围的刷奖,后台收到模拟请求将近 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
winterbells 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
https://www.v2ex.com/t/233173
不知道这个有用没 |
24
lianxiaoyi 2016-07-18 09:17:05 +08:00
@kungfuchicken 跟我一样 ...喜欢埋坑......我一般都是地址里面会带上 token ... key 等等字段....其实里面内容就是 base64 的"是不是该找条狗冷静一下",,,,"且撸且珍惜".....真正内容用一些不起眼的 key 代替
|