V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Wongzigii
V2EX  ›  程序员

如何防止别人刷注册接口,求解决方案

  •  1
     
  •   Wongzigii ·
    wongzigii · Sep 10, 2016 · 13427 views
    This topic created in 3517 days ago, the information mentioned may be changed or developed.

    最近发现有人在恶意刷我们的注册接口,发送了大量的短信验证码,注册设备都是 iOS ,但是诡异的是每个账号的 IDFA 都不一样。 Note :注册接口加了限制,同一个号码在一定时间内只能接受一个短信验证码。 有人知道是什么黑科技吗?

    37 replies    2016-09-12 16:39:20 +08:00
    youyoumarco
        1
    youyoumarco  
       Sep 10, 2016
    大量的真机同时注册?
    zhicheng
        2
    zhicheng  
       Sep 10, 2016   ❤️ 1
    IDFA 不过是个字符串,每个帐号不一样哪里诡异了。防止滥用的方法,限 IP , 限号码,限全局数量。
    crab
        3
    crab  
       Sep 10, 2016   ❤️ 2
    被人直接当作短信攻击接口了吧。建议同号码 1 天只能 5 次短信。
    最好加上验证码限制 IP 限制。
    另外不管有没有发送成功都提示发送成功,别提示已经超过限制。
    UnisandK
        4
    UnisandK  
       Sep 10, 2016   ❤️ 1
    图形验证码
    ljbha007
        5
    ljbha007  
       Sep 10, 2016   ❤️ 1
    加图形验证码 还有限制 IP 发送频率
    overlords
        6
    overlords  
       Sep 10, 2016
    语言验证码
    Wongzigii
        7
    Wongzigii  
    OP
       Sep 10, 2016
    IDFA - This is unique for every device. It is reset in the following ways:

    1.User can reset it and disable it as well (Limit Ad Tracking). This is found in Settings>Privacy>Advertising.

    2.It is reset on OS re-install.

    上网找到一些可以 reset IDFA 的方法
    fyibmsd
        8
    fyibmsd  
       Sep 10, 2016
    付费注册 perfect
    zhicheng
        9
    zhicheng  
       Sep 10, 2016 via Android
    为什么要 reset ?难道你在服务器端会验证 IDFA 是否真实存在?
    Wongzigii
        10
    Wongzigii  
    OP
       Sep 10, 2016
    @zhicheng 只是做了一些渠道统计

    1. 刷子不可能是直接调用接口来刷,我们接口是 https, 且请求参数做了手脚。
    2. 每次手机号, IP , IDFA 都在变。
    3. 目前我能猜到的是刷子通过越狱手机脚本模拟 APP 操作。

    不知道谁做过类似操作或防范过类似攻击。
    liuzhedash
        11
    liuzhedash  
       Sep 10, 2016
    @Wongzigii https 和接口是否能刷并没有关系吧?参数的手脚具体指的是什么?
    aeshfawre
        12
    aeshfawre  
       Sep 10, 2016
    @Wongzigii https 接口对吧,数据应该没加密对吧。
    直接模拟发送 http 包给你,软件随机修改其中的参数就可以的。这种一般都不可能是模拟 app 操作,
    bao3
        13
    bao3  
       Sep 10, 2016 via Android
    跟楼主说一下,越狱后可以随便改。。。。。请一下广告跟踪就可以了。我是用越狱插件把所有的都伪造一次。哈哈原来还可以有这个功能。。。
    aeshfawre
        14
    aeshfawre  
       Sep 10, 2016
    从你的描述来看,个人觉得就是简单的 http 封包来刷。 python 代码 30 行差不多。
    ip 都在变:可能是利用 http 头的那个 x 开头的参数漏洞。另外一种就是买代理 ip 了,成本稍微高点就是。
    解决方式:直接加验证码,或者客户端那边数据加密的方式,服务端这边解密失败就标记这个请求。这个需要让客户端升级成你的新版本,不知道你的 app 能不能实现。

    其他的方法那就只能自己找了,他那边发送过来的 http 数据中,找出和正常用户有区别的东西来,找出来的异常账户做标记,不要让做脚本的人知道你发现了他,让他自己搞不明白你用了什么手段发现他。这些帐号以后可以删除,或者限制功能。
    nodeath
        15
    nodeath  
       Sep 10, 2016
    紧急上个验证码吧。楼主是 APP 注册接口被刷要根治得判断是否越狱、越狱的需要查看是否安装作弊软件,符合的干掉
    nodeath
        16
    nodeath  
       Sep 10, 2016
    @nodeath 少打了几个字,假如是 APP 注册接口被刷
    chuhemiao
        17
    chuhemiao  
       Sep 10, 2016
    加单个 ip 限制,加图形验证码。找运维把这个人 ip 先干掉
    cszchen
        18
    cszchen  
       Sep 10, 2016 via iPhone
    肯定不会是用手机刷呀,模拟个 http 请求,几块钱就能买一堆代理 ip 。解决办法就是要做人机判断,成本最低的就是图形验证码
    vus520
        19
    vus520  
       Sep 10, 2016
    难道验证码不是最好的方案吗?
    loading
        20
    loading  
       Sep 10, 2016
    嫁接 12306 的验证码,还能帮打码赚钱,多好。
    jekkihun
        21
    jekkihun  
       Sep 10, 2016
    @aeshfawre 请问 https 的 POST 请求是模拟不了吧? 我之前截取某个 iOS APP 的包时候, https 里面参数都是乱码。
    lemontv
        22
    lemontv  
       Sep 10, 2016
    @Wongzigii 我司有设备识别的产品,不知道有兴趣么?
    liuxu
        23
    liuxu  
       Sep 10, 2016
    我们公司也出过这情况,后来加了图形验证码就好多了
    xiaoqi
        24
    xiaoqi  
       Sep 10, 2016
    一般加极验验证就好啦,没有人那么无聊刷这个
    codehz
        25
    codehz  
       Sep 10, 2016
    @jekkihun 一般 HTTPS 的直接中间人攻击啊。。。就算用双向验证都有相关解决方案(大不了越狱提取一下客户端证书。。。)
    tabris17
        26
    tabris17  
       Sep 10, 2016
    人家用脚本刷的,你 IDFA 有啥用,不都可以伪造么
    aeshfawre
        27
    aeshfawre  
       Sep 10, 2016
    @jekkihun 能啊,你看到是乱码,是因为你没有用中间人技术。
    ykrl089
        28
    ykrl089  
       Sep 10, 2016 via iPhone
    加防 csrf ,如果码对不上直接挂断。
    ic3z
        29
    ic3z  
       Sep 11, 2016 via Android
    1.加验证码
    2.统计 ip ,限制次数
    jccg90
        30
    jccg90  
       Sep 11, 2016 via Android
    以前刷过美团大众之类的各种首单优惠,刷过滴滴 uber 新用户优惠,刷过积分墙。。。现在没有完美的验证设备的方法,通过设备信息限制没有用,要加上别的思路。。。
    hantsy
        31
    hantsy  
       Sep 11, 2016
    @ykrl089 CSRF 是最基本的吧。
    0x00
        32
    0x00  
       Sep 11, 2016
    一句话概括: 增加注册成本

    如:
    1. 上验证码, 图形, 滑动, 都可以, 推荐阿里云安全滑动验证码
    2. CPU POW, 请求接口前, 先让 CPU 回答一个问题, 这个问题解题过程需要 3 秒左右
    3. 付费注册, 或者先 OAuth 再注册
    0x00
        33
    0x00  
       Sep 11, 2016
    @jccg90
    别公开说这些哦, 金额较大的薅羊毛要追加刑事责任
    cjyang1128
        34
    cjyang1128  
       Sep 11, 2016
    目前的短信厂商不是都需要你提供验证码的吗
    jccg90
        35
    jccg90  
       Sep 12, 2016
    @0x00 哈。。。刷首单之类的不是为了赚钱,是为了研究反作弊,不好好研究的话,被刷一轮要损失好多钱。。。这种事就要用黑客思维来思考。。。就像之前有不少电商公司出过支付 0.01 充值几百块的 bug ,这种问题只要稍微专业点的,都应该在开发设计中考虑到
    galenzhao
        36
    galenzhao  
       Sep 12, 2016
    @0x00 哈哈哈 POW 是我能想到的最好的解决方式
    keinx
        37
    keinx  
       Sep 12, 2016
    访问接口的时候需要带上加密手机号、内容、时间的 token ,后端解密
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1003 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 125ms · UTC 20:15 · PVG 04:15 · LAX 13:15 · JFK 16:15
    ♥ Do have faith in what you're doing.