V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
hayao650
V2EX  ›  问与答

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

  •  
  •   hayao650 · Oct 19, 2016 · 11038 views
    This topic created in 3477 days ago, the information mentioned may be changed or developed.

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

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

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