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

短信登录接口被人刷怎么办呢?

  •  
  •   xi_lin · 2015-10-15 14:46:57 +08:00 · 5405 次点击
    这是一个创建于 3108 天前的主题,其中的信息可能已经有所发展或是发生改变。

    已经做了针对 IP 和手机号的 rate limit ,但是架不住多 IP 多手机号的刷,除了进一步的限制频率外有什么好办法吗?

    其实我还很奇怪为什么没有用户来投诉收到垃圾短信。。

    23 条回复    2015-10-18 21:09:25 +08:00
    avichen
        1
    avichen  
       2015-10-15 15:13:15 +08:00
    1.昨天不是有过一样的问题了嘛?见: http://www.v2ex.com/t/227899#reply25
    2.估计人家手机都被轰炸得开不了机了
    kendetrics
        2
    kendetrics  
       2015-10-15 15:25:58 +08:00
    图形验证码

    要是算法能力够变态可以前端加密,像某宝一样用 JS 加密鼠标轨迹一起发到后端来判断是不是爬虫,除非攻击者也耐着性子啃完你的加密代码然后在爬虫里模拟,这会极大增加他的攻击成本,而且还不影响用户体验
    hicdn
        3
    hicdn  
       2015-10-15 15:26:03 +08:00
    淘宝短信验证码代收
    paradoxs
        4
    paradoxs  
       2015-10-15 15:34:57 +08:00
    只能加密。 让别人看不到借口
    ihacku
        5
    ihacku  
       2015-10-15 17:17:06 +08:00
    你看看那些手机号是不是都打不通?提示号码已过期之类?
    gbooks
        6
    gbooks  
       2015-10-15 21:39:34 +08:00
    加密在前端都能看到!加个急速验证类型的滑动验证可以难倒一大片了,然后加个 ip 限制
    xi_lin
        7
    xi_lin  
    OP
       2015-10-15 23:20:14 +08:00
    @avichen @kendetrics @gbooks app 的老版本在用和网页一样的接口,不好加验证码。。
    xi_lin
        8
    xi_lin  
    OP
       2015-10-15 23:20:38 +08:00
    @kendetrics 移动端做不了这种加密吧?
    xi_lin
        9
    xi_lin  
    OP
       2015-10-15 23:21:12 +08:00
    @paradoxs 总有前端暴露在外,模拟一下表单提交的话接口加密没什么意义吧?
    xi_lin
        10
    xi_lin  
    OP
       2015-10-15 23:21:30 +08:00
    @ihacku 这倒没有试,不过看了归属地是天南海北
    kendetrics
        11
    kendetrics  
       2015-10-15 23:30:24 +08:00
    @xi_lin 你可以写自己的 JS 加密规则呗, JS 移动基本也都支持的啊。。
    前端加密暴露是肯定会暴露的,但只要算法够复杂,就可以让他写爬虫的成本尽可能的高。几页长没注释的加密函数算出来的 token ,要用他写爬虫的语言去重新实现,这个能要命的

    APP 你可以加个&type=app 让接口和网页分开兼容,然后在程序内算个 token 附上,在服务端验证,算法不泄密的话爬虫就没法模拟请求。然后网页那边简单的加个验证码就好
    crab
        12
    crab  
       2015-10-15 23:35:21 +08:00
    加验证码吧。

    另外你说已经做了针对 IP 和手机号的 rate limit

    已经做了这些了,那就不算被刷了吧。多数网站的手机接口不也都是这样吗。有的连 IP 都没限制只限制手机号码 1 天或者 1 小时内最多几次。
    xi_lin
        13
    xi_lin  
    OP
       2015-10-15 23:43:54 +08:00
    @kendetrics 新版本 app 可以用这个加密思路做,但是老版本的 app 也得保证能用,这样的话在覆盖率足够高之前没办法启用吧?
    xi_lin
        14
    xi_lin  
    OP
       2015-10-15 23:44:45 +08:00
    @crab 我原来也觉得 rate limit 够用。可是看了 log 发现它根本是在随机生成手机号在刷接口。。
    randyzhao
        15
    randyzhao  
       2015-10-15 23:52:55 +08:00
    IP 限制怎么做的, 我们是短时间频繁调用发短信接口的话就直接 ban 掉 24 小时(不管你手机号是啥

    2 天就消停了.
    kendetrics
        16
    kendetrics  
       2015-10-16 00:01:13 +08:00
    @xi_lin 老 APP 用 HTTP 头区分一下吧。。你查一下攻击者发送的请求,如果他模拟的网页操作,很可能会附加上一些浏览器特有的头便于伪装,你可以对于有多余项(比如 UA 之类的)的直接不响应,或者你客户端有什么独特的特征能区分出来更好。。新客户端和网页端全部加密,把老版本留出来作为类似白名单的的存在。

    他不一定能想到在你网页开始加密之后,还能抓老手机端的包来模拟,就算下载了客户端,如果下的是新版的会发现还是加密了的。然后你等旧版用户量少到一个程度,就强制他们迁移新版。

    当然最坏的打算是这货真又去抓了旧版客户端的包,然后你又不能承受这样下去的损失,那就只能强制旧版用户迁移了。

    。。你要连在登陆失败的时候显示一个“请升级最新版”的接口都没留,那就是真的 GG 了
    avichen
        17
    avichen  
       2015-10-16 11:22:56 +08:00
    @xi_lin 加验证码和哪个应用在用接口没关系的呀,你在调用接口的 UI 之前加一步先输入页面验证码,通过后再调用短信接口发送短信
    xi_lin
        18
    xi_lin  
    OP
       2015-10-16 14:21:50 +08:00
    @randyzhao IP 限制放的比较宽,现在的限制是手机号和 IP 作为 KEY 同时到达一定次数后才 ban 掉 24 小时。 IP 如果限的太小的话像公司里所有人用同一个出口 IP 不是很快就到达上限了么?
    xi_lin
        19
    xi_lin  
    OP
       2015-10-16 14:22:47 +08:00
    @kendetrics 我感觉抓旧版的包还是很可能发生的。。不过加密是个好思路,后续打算试试。
    有预留一个弹出信息接口~
    xi_lin
        20
    xi_lin  
    OP
       2015-10-16 14:23:09 +08:00
    @avichen 存量的老 app 没法加呀,发出去的版本波出去的水
    randyzhao
        21
    randyzhao  
       2015-10-16 22:40:45 +08:00
    @xi_lin IP 如果限的太小的话像公司里所有人用同一个出口 IP 不是很快就到达上限了么

    我的情况是注册接口的验证码

    所以 rate 稍微放宽些, 就不会有影响.

    攻击者基本上都是疯狂的进攻, 从来不讲策略的.
    xi_lin
        22
    xi_lin  
    OP
       2015-10-17 18:56:59 +08:00
    @randyzhao 嗯。我觉得攻击者好蛋疼,损人不利已
    randyzhao
        23
    randyzhao  
       2015-10-18 21:09:25 +08:00
    @xi_lin +1 到底图个啥...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5317 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 925ms · UTC 01:31 · PVG 09:31 · LAX 18:31 · JFK 21:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.