• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Wongzigii
V2EX  ›  程序员

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

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

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

    37 replies  •  2016-09-12 16:39:20 +08:00
    youyoumarco
    youyoumarco
    Sep 10, 2016
    1
    大量的真机同时注册?
    zhicheng
    zhicheng
    Sep 10, 2016❤️1
    2
    IDFA 不过是个字符串,每个帐号不一样哪里诡异了。防止滥用的方法,限 IP , 限号码,限全局数量。
    crab
    crab
    Sep 10, 2016❤️2
    3
    被人直接当作短信攻击接口了吧。建议同号码 1 天只能 5 次短信。
    最好加上验证码限制 IP 限制。
    另外不管有没有发送成功都提示发送成功,别提示已经超过限制。
    UnisandK
    UnisandK
    Sep 10, 2016❤️1
    4
    图形验证码
    ljbha007
    ljbha007
    Sep 10, 2016❤️1
    5
    加图形验证码 还有限制 IP 发送频率
    overlords
    overlords
    Sep 10, 2016
    6
    语言验证码
    Wongzigii
    Wongzigii
    OP
    Sep 10, 2016
    7
    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
    fyibmsd
    Sep 10, 2016
    8
    付费注册 perfect
    zhicheng
    zhicheng
    Sep 10, 2016 via Android
    9
    为什么要 reset ?难道你在服务器端会验证 IDFA 是否真实存在?
    Wongzigii
    Wongzigii
    OP
    Sep 10, 2016
    10
    @zhicheng 只是做了一些渠道统计

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

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

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

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