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

求防刷问题

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

    搬砖遇到实际线上问题,诚恳咨询 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 之类的大众包中,迷惑视线。
    可以找找爬虫高级技巧,反爬虫,反反爬虫的一些资料
    u2r1Hqo6HExmNsrt
        7
    u2r1Hqo6HExmNsrt  
       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     Solana     1031 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 18:29 PVG 02:29 LAX 11:29 JFK 14:29
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86