V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
exceldream
V2EX  ›  程序员

求防刷问题

  •  
  •   exceldream · 2020-11-02 13:42:10 +08:00 via Android · 2841 次点击
    这是一个创建于 1511 天前的主题,其中的信息可能已经有所发展或是发生改变。

    搬砖遇到实际线上问题,诚恳咨询 v2 大神,

    已知:

    1. 后端接口提供给前端 h5 调用

    2. 用户账号绑定到每一台手机设备上

    3. 用户登陆生成 token 算法目测已被攻破

    求:

    以下两种情况下,如何防止后端接口被刷?

    Case A: 此接口要求用户登陆,因此可以抓到用户 uid,可以对此限制。但黑产手上似乎成千上万的设备和账号来刷。限制单个用户仿佛依然不起作用。

    Case B: 用户不需要登陆,连用户 uid 都没有,直接刷下单接口,每天较正常流量,订单量翻了两倍多。观察过请求的 ip,也是不停地变换。

    17 条回复    2020-11-03 15:12:03 +08:00
    onfuns
        1
    onfuns  
       2020-11-02 13:45:51 +08:00
    动态图形验证码,破解也是要成本的。
    linauror
        2
    linauror  
       2020-11-02 13:47:06 +08:00
    加高刷的成本,比如必需验证手机号。
    另外 token 算法怎么会被破?这玩意在服务端,而且还附带验证,想攻破很难吧
    takemeaway
        3
    takemeaway  
       2020-11-02 14:31:32 +08:00
    往 token 上想办法。
    别说你,之前微信也遇到过。
    微信支付之前是可以刷出交易记录的信息,后来改版了就不行了。
    具体情况,你可以自己研究学学。
    exceldream
        4
    exceldream  
    OP
       2020-11-02 15:32:45 +08:00 via Android
    @linauror 实际上是他们不停地换着手机号和账号来请求,显然不是人工的。验证手机号其实是在注册账号时做的,这个我们做了的。调用接口时,不可能再验证一遍。图形验证码对 CASE A 应该是可以做的,比如,同个用户在单位时间内请求频率超了给验证码。如果一刀切上验证码会很损用户体验。
    exceldream
        5
    exceldream  
    OP
       2020-11-02 15:33:26 +08:00 via Android
    @takemeaway 如果有相关链接将不胜感激
    renmu123
        6
    renmu123  
       2020-11-02 16:30:28 +08:00 via Android
    只有提高成本,让黑产承受不起不起,比如说:
    1. 滑动或者各种奇形怪状的验证码
    2. 请求重要借口的时候带上各种解密参数,加密方法也要经常变化,或者设置几套,每天随机换。
    可以把加密的函数放在 jquery 之类的大众包中,迷惑视线。
    可以找找爬虫高级技巧,反爬虫,反反爬虫的一些资料
    Nillouise
        7
    Nillouise  
       2020-11-02 17:03:29 +08:00
    好奇问一句,用户登陆生成 token 算法 是指什么?攻破又是什么意思?
    yaphets666
        8
    yaphets666  
       2020-11-02 17:06:50 +08:00
    下单接口 不带着 uid 直接返回 error 为啥不带 uid 也能调接口呢?
    murmur
        9
    murmur  
       2020-11-02 17:07:57 +08:00
    短信验证码配急验,没有验证码短信验证就会被拿来攻击别人
    firefox12
        10
    firefox12  
       2020-11-02 17:41:59 +08:00
    token 不是和用户绑定的吗? 和刷新次数也可以绑定啊, 记录下刷新次数,次数一到马上进校验码 厉害的直接进个 3 重校验码, 让你解密 3 次才恢复。

    你们不会只校验 token 正不正确,内部没有 token 对象吧
    TsingChan
        11
    TsingChan  
       2020-11-02 20:20:40 +08:00
    可以看看这个是否帮助: http://www.9ong.com/042019/web 人机验证的探索与实践.html

    以前最好的就是短信验证码(下行),但现在黑产也很厉害了,腾讯在没有使用人机风控验证前,有个很有效的但不好的方法:发送短信到指定号码(上行)。

    现在有人机验证,极验、阿里云、腾讯人机验证,但收费。

    如果是使用图形验证的话,如大家说的,就是要增加破解的成本,让黑产得不偿失,传统图形验证码的方式加以改进下一定程度可以解决。适用于场景也比较广泛。

    加密都是防君子的,小人黑产难防,只能不断的根据实际情况提高刷的成本,当黑产可以刷但不值得的时候,也是成功的。
    xuanbg
        12
    xuanbg  
       2020-11-03 07:24:53 +08:00
    @linauror 只要注册了用户,token 还不是随便拿。

    防刷无非也就这么几种办法:
    1 、限制请求的频率,譬如同一个用户同一个接口每 x 秒才能调用一次,没有用户的可以把用户换成手机的设备 id 等等
    2 、加各种验证码,终极手段是短信验证码,还是用户发到一个固定号码的那种。来攻击呀,你要你肯花钱。
    Cong99
        13
    Cong99  
       2020-11-03 10:27:40 +08:00
    有查被攻破原因吗?
    Cong99
        14
    Cong99  
       2020-11-03 10:28:59 +08:00
    前端是不是没做 js 混淆,或者前端代码的注释有什么敏感信息之类的,可能泄露 token 算法的东西?
    vone
        15
    vone  
       2020-11-03 11:47:55 +08:00
    前端上的混淆和加密只能提升他们的逆向的工作量,本质上不能解决问题。还有限流也是类似的情况,只要你的接口价值足够高,还是有人有能力能突破你的各种限制( IP 被封就买 IP,手机号被封就换手机号)。所以建议在混淆和限流的基础上,提高逆向成本和接口利用价值。

    业务上:
    1 、学拼多多,地址、收件人重复的砍单;
    2 、学淘宝,登录时做最近购买商品验证;![image.png]( https://i.loli.net/2020/11/03/SCriGhI2lFfTcgW.png)
    3 、发律师函;
    4 、分析被刷的原因,降低接口价值。

    技术上:
    1 、请求中出现调试类信息直接封号,如 Headers 中的 “Postman-Token”、navigator.webdriver=true 、UserAgent 内出现特殊关键词;
    2 、js 循环执行 debugger 指令,让逆向者无法使用 Chrome DevTools ;
    3 、检测 Chrome DevTools 启动情况,频繁者封号(百度可以查到检测方法);
    4 、请求体使用 RSA 算法加密,大促或者周期性更换密钥;
    5 、核心功能做 A 、B 两个页面和两个接口加密方式,随机切换 A/B,如果出现请求数据和页面不一致的情况,就封号。
    6 、收集鼠标点击、移动数据,异常则屏蔽。
    locoz
        16
    locoz  
       2020-11-03 12:48:05 +08:00   ❤️ 1
    如果你碰到的是专业黑产,那么你在技术层面所做的防刷就都是没意义的,因为黑产搞你的成本远比你想象的要低很多。

    核心问题还是在于业务流程,只有通过结合业务流程来做风控才可以尽可能地防止被搞,像#1 和#6 说的各种验证码、#2 说的手机号验证、#6 说的加密参数弄几套随机换、#14 说的 JS 混淆以及#15 说的检测那些工具、增加无限 debugger 、多密钥和加密方式切换,现在都是基本操作了,随便就能破掉,毫无难度...而像#16 说的鼠标轨迹分析这种,一般人弄不来,即使弄了,没有结合业务流程也还是一样随便破。

    #11 说的发送短信到指定号码(上行)这种方案是比较可取的,因为卡商、号商跟刷你们的并不是同一批人,刷你们的人并不一定能发短信出去,通常只是单纯的接码而已,所以能挡掉一大部分人。

    结合业务流程的做法就是先暗搓搓地收集好各种信息,然后通过数据分析出没有任何日常操作的人。比较典型的例子就是美团外卖,如果你一直在搜索商品或食物,或是一天内长时间在进行操作,那么就会触发风控,因为正常人不可能一直在搜索或者长时间在外卖平台上进行操作,所以肯定是有问题的。
    exceldream
        17
    exceldream  
    OP
       2020-11-03 15:12:03 +08:00 via Android
    @Cong99 这个不知道呢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6008 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:04 · PVG 10:04 · LAX 18:04 · JFK 21:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.