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

验证码被恶意狂刷,有什么办法反击,求指教

  •  
  •   hayao650 · 2016-10-19 20:11:02 +08:00 · 10147 次点击
    这是一个创建于 2960 天前的主题,其中的信息可能已经有所发展或是发生改变。

    网站的短信验证码被恶意刷,请网络安全方面的前辈,指教一下,有什么办法能反击? 攻击者的 ip 是动态的,估计是做了什么代理,手机号也是变动的 现在能做的就是限制访问频率 http 头部信息模拟的是 IE 浏览器,无法通过限制特定的头部信息来丢掉请求

    31 条回复    2017-07-06 18:13:41 +08:00
    lianyue
        1
    lianyue  
       2016-10-19 20:15:06 +08:00
    简单的 增加个 token
    一劳永逸的 增加个图片验证码 然后图片验证码对了才能。。。发送短信验证码
    UnitTest
        2
    UnitTest  
       2016-10-19 22:08:58 +08:00
    我也遇到过这个问题, ip 动态很麻烦, token 麻烦,图片验证码最简单,但是体验不好。
    我把 ip 和手机存到 redis ,一个 ip 或者手机号发送 3 条短信之后就要验证码。
    crab
        3
    crab  
       2016-10-19 22:26:57 +08:00
    同 1 楼,上验证码。至于手机号码不同,有可能短信接口被人调用写群发攻击器了。
    yankebupt
        4
    yankebupt  
       2016-10-19 22:34:39 +08:00 via Android
    最简单的就是不用短信验证码。短信验证被刷很有可能是对方反感实名认证,或者手机号泄露过被骚扰烦了找个网站撒气,并不一定是特定针对你的网站,很可能只是看到没有大网站的法律背景同时又好欺负罢了。
    p.s.关于验证码有打码云什么的其实都是小事,你肯定还记得微信刷阅读量的那个吧,那可是每个都是真真正正手机的,都能真的验证码甚至装 app 都不在话下,你可以略微参考一下微信最后怎么处理的,虽然可比性不高
    UnitTest
        5
    UnitTest  
       2016-10-19 23:09:54 +08:00
    @yankebupt 你想的简单了。有一帮人就是找各个网站的短信接口,然后打包做成一个短信轰炸机卖钱。

    人工破解验证码来刷短信成本高,没啥收益,一条短信也就几分钱,公司也无所谓,
    之前有漏洞,被人用程序一晚上刷了我二十多万条短信。就是短信轰炸机这种东西干的, ip 肯定是分布的,因为买软件的人天南海北,什么手机号都有,唯一特征就是比较密集。所以我用缓存限制了以后就没人大量刷了,小规模的我也看不出来,都混杂在正常的短信里了。
    wd
        6
    wd  
       2016-10-20 00:04:54 +08:00 via iPhone
    学 12306 反过来 让用户给你发短信先
    lslqtz
        7
    lslqtz  
       2016-10-20 01:51:13 +08:00
    反击的话,你可以尝试给他在接口中返回一个超大的内容,几十 M 或者几 G 这样子,他的客户端估计很快就爆掉了
    macroideal
        8
    macroideal  
       2016-10-20 07:26:28 +08:00 via iPhone
    @lslqtz 反回大内容反而增加了服务器的负担
    jackyspy
        9
    jackyspy  
       2016-10-20 08:07:29 +08:00
    提高验证码获取门槛,比如使用难度较高的验证码,杜绝机器识别。
    限制同一个 IP 和同一手机号访问频次。
    为了保护服务器,可以考虑根据平时的访问量来限制整站短信接口调用频次,副作用就是可能影响正常用户。
    lslqtz
        10
    lslqtz  
       2016-10-20 08:22:58 +08:00 via iPhone
    @macroideal 哈哈 不差钱就用
    Phant0m
        11
    Phant0m  
       2016-10-20 08:27:31 +08:00 via iPhone
    谁让你用手机号注册,邮箱不好么?现在的网站,动不动就要手机注册
    Cannikin
        12
    Cannikin  
       2016-10-20 08:41:30 +08:00 via Android
    不知你是否知道“短信轰炸机”,现在的情况也是有可能被恶意利用了。收集网上需要短信验证的网站,然后只需要填入手机号,该手机号使用者就要抓狂了。
    timothyye
        13
    timothyye  
       2016-10-20 09:01:02 +08:00 via Android
    加图片验证码
    Infernalzero
        14
    Infernalzero  
       2016-10-20 09:10:52 +08:00
    最有效的方法就是加图片验证码增加对方难度
    如果对方伪装得比较差的话其实通过判断各种 header 信息在 nginx 处拦截即可,记得匹配到了直接返回 200
    tomczhen
        15
    tomczhen  
       2016-10-20 09:33:31 +08:00
    1. 检查代码逻辑,看看是不是有什么漏洞——反正我公司的项目就遇到过一次。
    2. 增加滑动验证码,貌似有个极验是做这个,其他家就不清楚了。
    3. Web API 的话,增加签名校验,防止伪造请求。另外,还得考虑重放攻击的处理。
    4. 后台判断出是攻击者的话,别直接报错、屏蔽之类的,而是返回假数据,但是不实际处理业务。(比如返回正常状态信息,但是实际不发短信。)
    PEP4JASON
        16
    PEP4JASON  
       2016-10-20 09:43:02 +08:00
    网站短信接口暴露? 还是脚本操作
    gamexg
        17
    gamexg  
       2016-10-20 09:55:25 +08:00
    @macroideal 给他重定向到 ms iso 。
    hayao650
        18
    hayao650  
    OP
       2016-10-20 14:16:39 +08:00
    1.获取验证码是在注册环节,现在已经控制 ip 和电话号码了,也加上图形验证码,短信发送频率已经降下来了
    2.我也不知道为什么非要用手机号+短信验证码这种东西,感觉对公司业务并没有太多帮助
    @PEP4JASON 短信接口在网站上很容易看到, F12 一下,就都看到了,这东西还有办法隐藏么?不懂,求解。
    @gamexg 这样做是不是有点儿不太好。。。
    @lslqtz 我也想这么做,但是考虑到公司买的可怜的服务器和和短信攻击的频率,就放弃了。。。
    PEP4JASON
        19
    PEP4JASON  
       2016-10-20 15:31:27 +08:00
    隐藏参数或加密参数
    PEP4JASON
        20
    PEP4JASON  
       2016-10-20 15:34:30 +08:00
    然后对同一号码请求多次 验证码 的场景做一下处理
    jswh
        21
    jswh  
       2016-10-20 16:06:05 +08:00
    反过来发短信
    046569
        22
    046569  
       2016-10-20 16:21:44 +08:00
    经常遇到这种问题,大致思路楼上都说过了.
    除了验证码以外,我更趋向于在前端增加 WAF ,简单有效.能识别出绝大部分攻击者.
    关键在于认真分析日志,搞清楚对方的攻击手段和特点.比如对方总共使用多少代理?平均每个代理请求几次?对方攻击的时间段趋向于白天还是夜晚?如果这些问题你都了然于胸,上 WAF 吧.
    lianxiaoyi
        23
    lianxiaoyi  
       2016-10-20 16:29:04 +08:00
    最简单的。。。。。别做限制 。。。。。当你监测到某个 ip 发送 10 条信息之后。。。。你还是返回正常 但是不发送短信了。。。。造成一种视觉错误。。。。
    zpfhbyx
        24
    zpfhbyx  
       2016-10-20 18:00:47 +08:00
    @lianxiaoyi 。。我之前也是这么干的- -。
    hayao650
        25
    hayao650  
    OP
       2016-10-20 18:43:20 +08:00
    @lianxiaoyi 他的 ip 数量太多了,我观察了两天,第一天有 200 多,第二天将近 400 ,一直在更新
    lslqtz
        26
    lslqtz  
       2016-10-21 01:03:29 +08:00
    @hayao650 用 WAF 吧。
    可以给他 301 跳转到百度(
    lslqtz
        27
    lslqtz  
       2016-10-21 01:03:55 +08:00
    对短信接口加 Token UA 验证
    hayao650
        28
    hayao650  
    OP
       2016-10-21 09:12:39 +08:00
    @lslqtz 是登陆注册接口,没办法加 token 吧
    lslqtz
        29
    lslqtz  
       2016-10-21 10:13:40 +08:00 via iPhone
    @hayao650 在需要用的页面给用户生成 token 加进去(用 IP 、时间等防止多 IP 刷)之类的。。非得说防刷,也可以判断 IP 的来源地区之类的,网上有几个我记得可以查是不是代理。
    lianxiaoyi
        30
    lianxiaoyi  
       2016-10-21 12:05:29 +08:00
    @zpfhbyx 这种办法其实很好。。。。。我就遇到过一个 sb 在那提交了一个多小时。。。。。
    ssyz1988
        31
    ssyz1988  
       2017-07-06 18:13:41 +08:00
    @lianxiaoyi 但是楼主碰到的并不是一个固定的 ip
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2997 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:03 · PVG 08:03 · LAX 16:03 · JFK 19:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.