V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
king14
V2EX  ›  问与答

运营活动遭遇刷奖,无奈清空奖池,求大神赐教!

  •  
  •   king14 · 2016-07-16 16:03:38 +08:00 · 3362 次点击
    这是一个创建于 3053 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近公司推了一个基于微信浏览器的运营活动,大体内容就是用户可以通过分享为好友加分,所得分数用于抽奖游戏,奖品包含现金红包及手机等实物。 结果在活动推出的头几天就遭遇大范围的刷奖,后台收到模拟请求将近 5000 次 /秒,请求中 UA 不变, IP 及用户 id 动态变化( id 均为有效 id )。 请问除了通过访问频次将 id 加入黑名单之外(这个可能误伤),还有什么好的方式来预防类似的刷奖行为吗?求各位大神赐教!

    24 条回复    2016-07-18 09:17:05 +08:00
    kungfuchicken
        1
    kungfuchicken  
       2016-07-16 16:15:18 +08:00
    1. 每个分享连接都计算一个独立 hash 入库(每个用户分享 N 次,这个用户就有 N 个不重复的 hash 入库),把 hash 作为分享 URL 一个参数,加分判断时检查 hash 存在且对应传入用户 id ,且才能加分。
    2. 上 IP 频率黑名单,发现有问题的请求不要给错误信息,前台给正常信息但是不加分(以免让刷分者发现异常),然后在后台记录流水,即使有误伤正常用户,通过流水也能正常用户补分。
    046569
        2
    046569  
       2016-07-16 16:23:50 +08:00
    可以在 WAF 中部署规则,识别攻击者和访客行为的不同.比如攻击者访问流程和普通访客不同,或其它.

    king14
        3
    king14  
    OP
       2016-07-16 16:29:21 +08:00
    @046569 有想过通过用户行为来区分,比如抽奖请求和领奖请求之间必须经过查奖这一过程,不过如果攻击者模拟的时候同样按照这个顺序发送请求会怎么办呢
    king14
        4
    king14  
    OP
       2016-07-16 16:31:42 +08:00
    @kungfuchicken hash 值放在 url 里的话攻击者也可以拿到,这样的请求到后台也会是有效的吧
    notgod
        5
    notgod  
       2016-07-16 16:35:47 +08:00
    真是的 直接内定了
    奖品都给我吧 省得麻烦
    king14
        6
    king14  
    OP
       2016-07-16 16:39:38 +08:00
    @notgod 这想法不错
    magicsilence
        7
    magicsilence  
       2016-07-16 16:43:03 +08:00
    上滑动验证
    UnisandK
        8
    UnisandK  
       2016-07-16 16:43:07 +08:00
    /t/272482 可以跟这哥们儿联系一下,抽奖流程增加手机验证
    allenhu
        9
    allenhu  
       2016-07-16 16:45:07 +08:00 via Android
    只能说明你流程有漏洞
    MrMario
        10
    MrMario  
       2016-07-16 16:46:13 +08:00 via iPhone
    找阿里的风控,加个滑动验证
    king14
        11
    king14  
    OP
       2016-07-16 16:49:29 +08:00
    @magicsilence
    @UnisandK
    这个可以有
    king14
        12
    king14  
    OP
       2016-07-16 16:50:46 +08:00
    @allenhu 是有,这不是在想怎么改进么
    frozenshadow
        13
    frozenshadow  
       2016-07-16 16:58:32 +08:00 via Android
    请看我之前的一个帖子。。。。手机不方便翻
    046569
        14
    046569  
       2016-07-16 16:59:36 +08:00
    @king14
    比如抽奖动画 4 秒,他查询的时候是否低于这个时间,低于则判定有问题.
    不要设定单一规则判断,而是多条规则组合出一个阈值.比如此人输入查询页面缺乏 referer ,又频率过快,超过正常人水平,即可判定是外挂.
    shiny
        15
    shiny  
       2016-07-16 17:11:48 +08:00
    用微信的 oAuth 验证唯一用户,刷奖成本就上去了
    won
        16
    won  
       2016-07-16 20:08:09 +08:00
    自己公司开几台服务器用同样方式对刷,稀释奖池
    winterbells
        17
    winterbells  
       2016-07-16 21:12:51 +08:00
    还真能抽到 il||li (OдO`) il||li
    我以为抽奖都是骗人的。。。。
    xman123
        18
    xman123  
       2016-07-16 23:46:08 +08:00
    某东上的一个 API 接口: http://wxlink.jd.com/market/api/10570
    dream7758521
        19
    dream7758521  
       2016-07-17 08:06:52 +08:00 via Android
    后台直接调数据库,指定用户中奖
    king14
        20
    king14  
    OP
       2016-07-17 10:22:01 +08:00
    @shiny 这次活动初步统计有 2W+的真实刷奖 openid ,都是验证过后相互加分
    maxsec
        21
    maxsec  
       2016-07-17 12:59:52 +08:00 via iPad
    验证码,点击式的,滑动式的,
    shiny
        22
    shiny  
       2016-07-17 15:08:44 +08:00 via iPhone
    @king14 要是我做,就为分享后的好友加个激活条件,比如关注指定公众号,体验或消费或验证手机等才计积分,直接就计分了是容易被刷。
    wojiaodaxiaxia
        23
    wojiaodaxiaxia  
       2016-07-17 20:49:45 +08:00 via Android
    https://www.v2ex.com/t/233173
    不知道这个有用没
    lianxiaoyi
        24
    lianxiaoyi  
       2016-07-18 09:17:05 +08:00
    @kungfuchicken   跟我一样 ...喜欢埋坑......我一般都是地址里面会带上 token ... key 等等字段....其实里面内容就是 base64 的"是不是该找条狗冷静一下",,,,"且撸且珍惜".....真正内容用一些不起眼的 key 代替
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   967 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:27 · PVG 03:27 · LAX 11:27 · JFK 14:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.