验证短信码被盗刷怎么办 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Ds97
V2EX    程序员

验证短信码被盗刷怎么办

  •  
  •   Ds97 2022-04-06 09:37:36 +08:00 8572 次点击
    这是一个创建于 1353 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1.限制了一个号码一分钟之内只能发一次 2.一个号码一个小时最多 6 次 3.一个 ip 一天最多 10 次 4.阿里云的滑块验证 以上的这些验证都是生效的,但还是被刷了上万条,都是换不同号码,号码前面部分是固定的,后面几位数随机的,ip 也是换着来的,有成百上千个 ip ,阿里云的滑块验证也通过了,用机器是怎么滑动那个滑块的啊,一脸懵逼。请问这种情况该怎么防啊

    63 条回复    2025-01-09 13:48:11 +08:00
    hay0577
        1
    hay0577  
       2022-04-06 09:47:09 +08:00   5
    作为了程序员我之前就是这样让公司短信被盗刷将近 5000 块.
    后来我评估了一下我们网站可能日访问量就是个位数..所以我可耻的做了一个操作.
    每日短信发送达到一定的量之后关闭了短信通道.然后下发短信通知一下管理员,
    管理员手动检查这些数据是不是异常数据.如果是异常数据就继续关闭,如果不是的话,就重新打开短信通道,如此我们公司的短信就再也没有发生盗刷的情况了.
    wdy3334
        2
    wdy3334  
       2022-04-06 09:49:32 +08:00
    之前用过一个下载视频的软件,滑块是随机滑,因为有一定的容错,基本上滑 3 次就能蒙中
    jorneyr
        3
    jorneyr  
       2022-04-06 09:58:04 +08:00
    完全防止盗刷好像做不到,只能增加点难度。
    访问短信页面时生成 token ,请求端对 token 进行加密,后端解密判断 token 是否可用,再增加其他各种想到的方式增加点难度。
    chenuu
        4
    chenuu  
       2022-04-06 10:02:19 +08:00
    做过腾讯云的.腾讯的滑块验证很简单,后面的风控会变成 让点击正对你的蓝色三角形 这种会难些,大概可以在后台调整默认难度
    fumichael
        5
    fumichael  
       2022-04-06 10:02:19 +08:00
    @hay313955795 #1
    『每日短信发送达到一定的量之后关闭了短信通道』
    你好骚啊,学习了,是个思路
    LeegoYh
        6
    LeegoYih  
       2022-04-06 10:03:16 +08:00
    监控到异常情况时,把滑块验证切换到图形验证码,弄个复杂一点的验证码,基本上可以解决
    hay0577
        7
    hay0577  
       2022-04-06 10:03:52 +08:00
    @fumichael 这就是我司的人工 智能..
    Ds97
        8
    Ds97  
    OP
       2022-04-06 10:07:26 +08:00
    @hay313955795 这方法有点骚,但是不符合我们的需求,有过几次盗刷了,但是在假期,而且都是休息时间,通知管理员了也不能及时去检查异常,不能及时打开通道
    hay0577
        9
    hay0577  
       2022-04-06 10:08:43 +08:00
    @Ds97 通道会影响到业务吗?如果不会可以试试达到阀值后让通道冷却几分钟...
    o0
        10
    o0  
       2022-04-06 10:09:09 +08:00
    其实就是不断提高对方的成本就行了
    Kinnice
        11
    Kinnice  
       2022-04-06 10:09:23 +08:00
    使用更为复杂的验证手段(增加验证码难度,让用户主动发送验证码,动态修改路由 /校验参,发送请求 phone 字段加密(wasm))
    encro
        12
    encro  
       2022-04-06 10:09:28 +08:00
    下行变上行。
    手机验证变邮箱或第三方。
    再不行实名认证。
    daimubai
        13
    daimubai  
       2022-04-06 10:18:35 +08:00
    @hay313955795 学到了
    raycool
        14
    raycool  
       2022-04-06 10:19:37 +08:00
    这是被竞争对手恶意给刷了吧
    crab
        15
    crab  
       2022-04-06 10:19:56 +08:00
    随机号码应该就不是单利用接口了,明显是针对性弄你的。让用户主动发短信吧。
    Ds97
        16
    Ds97  
    OP
       2022-04-06 10:34:47 +08:00
    @jorneyr 这方法感觉还是不行,因为现在的请求都是通过操作我们 app 来请求的,而不是通过接口工具直接请求,因为只有通过 app 每个接口都会多加个几个签名的参数,这些验证也都通过了
    zwgf
        17
    zwgf  
       2022-04-06 10:35:43 +08:00
    用户输入手机号
    点击获取验证码
    弹出一个需要微信扫码的网页二维码,用户只需用微信扫这个二维码,然后点击发送验证码即可。
    这样你只需要判断一个微信用户一天最多发送几次即可。
    让盗刷的人,去大量注册微信号吧,把这个成本转嫁到腾讯。
    itechify
        18
    itechify  
    PRO
       2022-04-06 10:44:28 +08:00
    马克,求一个解决方案,感觉这类问题不太好处理呢
    Ds97
        19
    Ds97  
    OP
       2022-04-06 11:07:04 +08:00
    @zwgf 感谢你的回答 ,但是不能满足我们需求,我们有很多国外用户
    Ds97
        20
    Ds97  
    OP
       2022-04-06 11:09:11 +08:00
    @hay313955795 会影响到注册,因为我们有做国外的业务,所以 24 小时都可能会有注册登录,也不能在半夜达到阈值后起来改吧 哈哈
    Carseason
        21
    Carseason  
       2022-04-06 11:13:43 +08:00 via Android
    判断验证码次数达到一定条件后就要行为验证码+图形验证码都通过才行呗
    Crump
        22
    Crump  
       2022-04-06 11:40:21 +08:00   1
    做为一个做短信的人给一下我们常为客户提供的解决方案吧
    1.图形码必须的
    2.分步注册:第一步必须先填写账户密码,下一步在获取验证
    3.注册页面验证跳转来源
    4.最重要的,token 作为唯一性,获取验证时带上 token 后端验证
    5.短信提供商设置日发送限额,防止账户造成损失(估算下自己每天大概的量,设置额度。坏处就是可能整个账户都暂停,当然每家短信商机制不一样)
    6.ip 黑名单库(需要长期积累,不过网上之前也好像看到过类似的恶意 ip 库)
    希望能帮到你
    tiedan
        23
    tiedan  
       2022-04-06 11:48:40 +08:00
    上 Google Recaptcha
    Crump
        24
    Crump  
       2022-04-06 11:54:03 +08:00
    @tiedan 没用的,看他说的 号码前面部分是固定的,后面几位数随机的。很明显获取验证接口让人抓包了,然后他的接口没做安全措施
    LeeReamond
        25
    LeeReamond  
       2022-04-06 11:54:19 +08:00
    感谢 LZ 发帖可以学习解决方案。业务上之前听说过最简单的方法是屏蔽境外 IP ,境内 IP 直接按损失数额报警送对方进橘子就行了。可惜 LZ 的业务有大量海外用户,这就比较难搞了。
    tiedan
        26
    tiedan  
       2022-04-06 11:56:43 +08:00
    @Crump Recaptcha 就是解决机刷问题呀,没 token 或者分数过高直接 fail 掉请求
    skiy
        27
    skiy  
       2022-04-06 11:57:05 +08:00 via iPhone
    可以参考腾讯公司的骚操作。让用户发指定内容的短信到指定号码,然后来验证。
    Chism
        28
    Chism  
       2022-04-06 12:21:04 +08:00
    1. 单个 IP 每日超过 5 条需要 captcha
    2. 整体总量每日超过 1000 条,所有人需要 captcha (这个根据实际用户量调整)
    我是这么做的
    Ds97
        29
    Ds97  
    OP
       2022-04-06 12:36:06 +08:00
    @Chism 我们是用阿里云的滑块验证,没有用自己写的图形验证,滑块验证通过了才发短信,而且是每次发送都要滑块验证,还是防不住,全都是换着 ip 来的
    Chism
        30
    Chism  
       2022-04-06 12:42:41 +08:00
    @Ds97 你试试其它难度更大的验证方式,滑块毕竟只是图片拼接而已,AI 应该很容易破解
    justseemore
        31
    justseemore  
       2022-04-06 12:45:29 +08:00
    加个 ip 来源限制呗.. 请求页面跟下发短信要求 ip 一致..
    ZE3kr
        32
    ZE3kr  
       2022-04-06 13:24:05 +08:00
    加几个 hCaptcha ,每通过一次验证码你都能挣钱,所以不亏。
    KagurazakaNyaa
        33
    KagurazakaNyaa  
       2022-04-06 13:41:02 +08:00
    干脆做 POW 验证吧,每次发短信就按主流显卡性能跑满 1 分钟的难度,然后发个公告说明一下
    Wdafff
        34
    Wdafff  
       2022-04-06 13:43:57 +08:00
    我们是超过业务量或触发风控,反向发送短信验证,类似微信那种
    Felldeadbird
        35
    Felldeadbird  
       2022-04-06 13:43:57 +08:00
    滑块验证不是被人研究过不少解决方案嘛?楼主要不试下楼上推荐的 Google Recaptcha 。被人盯上恶意刷短信的话,只能增加对方的调用接口成本。
    spinecho
        36
    spinecho  
       2022-04-06 13:49:08 +08:00
    @XiLingHost 你这思路好像前几天在别的贴子上看到过...
    KagurazakaNyaa
        37
    KagurazakaNyaa  
       2022-04-06 13:58:04 +08:00
    @spinecho 你说的是这个帖子吗
    /t/845089
    laozhoubuluo
        38
    laozhoubuluo  
       2022-04-06 14:08:13 +08:00
    1. APP 层面能做的很多啊。比如上报一些终端信息之类的做风控,大量重复的异常终端直接干掉。再比如用户行为分析的数据,进来直接点注册需要更严格的审核,比如需要先验证邮箱才行。如果上述太难也可以有一些暴力的缓解手段,比如注册账号之后才能发短信验证,短信的手机号码不支持修改等等。
    2. 即使不考虑这些,也可以做一些验证码策略。例如国内运营商普遍采用万号段进行治理,万号段内超过一定阈值比如 50 就会告警甚至拉黑所有来自这个万号段的短信。另外也可以针对地域设置策略,例如估计 +1 的注册用户一般每天不超过 500 ,那么一天发往这个群组的短信超过 1000 或者单小时触发 200 就直接停掉后续发送。
    3img
        39
    3img  
       2022-04-06 14:09:03 +08:00
    收集用户交互时的行为数据,键盘鼠标等,再搞个模型跑一跑真伪,前提条件是大量收集数据
    laozhoubuluo
        40
    laozhoubuluo  
       2022-04-06 14:10:10 +08:00
    @Wdafff 这种也可以,不过量不够的厂商应该是拿不到专用通道用来发反向上行短信的吧。
    shequ2046
        41
    shequ2046  
       2022-04-06 14:10:38 +08:00
    @ZE3kr 1000 次有多少美金?
    LeegoYih
        42
    LeegoYih  
       2022-04-06 14:32:01 +08:00
    滑动验证码很容易被破解的,结合图形验证码可解决。

    用 redis 的 zset 滑动窗口。
    1. 每成功发送一条验证码,用 zadd 加一条时间戳。
    2. 获取验证码前,判断缓存中是否存在图形验证码的标识,如果是,则返回图形验证码。
    3. 发送短信前,用 zcount 统计 x 分钟内发送次数,如果超过 ${interval_threshold} 阈值,redis 中新增 global_captcha_type=graphic ,设置超时时间 y 小时,y 小时后自动切换回滑动验证码。

    至于换 ip 也可以解决,使用 redis 的 bitmap 实现一个黑名单,发现一个让运维手动加进去,他总会用完的。
    Ds97
        43
    Ds97  
    OP
       2022-04-06 15:28:31 +08:00
    感谢各位大佬提供的思路,学习了,这次不一定用到,因为用什么技术是公司大佬决定,下次有类似的需求可以借鉴你们提供的这些思路
    spinecho
        44
    spinecho  
       2022-04-06 15:38:51 +08:00
    smarterq
        45
    smarterq  
       2022-04-06 16:35:48 +08:00 via Android
    注册时做好 kyc ( IP 地址和信息要对应之类的),鉴别一下代理 IP ,注册完毕登陆之后再进行短信验证的步骤,误封的走人工通道或者其他通道验证
    nothingistrue
        46
    nothingistrue  
       2022-04-06 17:36:18 +08:00
    @Ds97 #19 国外手机号上 Google Recaptcha 或者其他机器人识别,国内手机号用他说的微信那个方法。
    Jf35jxN3fwBXyeLh
        47
    Jf35jxN3fwBXyeLh  
       2022-04-06 18:06:20 +08:00
    lz 的公司规模多大,楼上很多层主都提供了不少好意见,但这些不是一个人能搞定的,你们现在有反作弊团队吗
    Ds97
        48
    Ds97  
    OP
       2022-04-06 18:06:44 +08:00
    @smarterq 业务需求不允许这样子做,注册就让用户填太多东西就直接吓跑用户了
    Ds97
        49
    Ds97  
    OP
       2022-04-06 18:14:55 +08:00
    @YouKnowIt 小公司 小团队,做不了那么多的
    smarterq
        50
    smarterq  
       2022-04-06 18:35:20 +08:00
    @Ds97 邮箱和地理位置这几样已经算是很基本的信息了吧,不行就研究一下怎么检测是否用的代理 IP
    shenqicai
        51
    shenqicai  
       2022-04-06 18:50:04 +08:00
    阿里不是有智能验证吗?
    4BVL25L90W260T9U
        52
    4BVL25L90W260T9U  
       2022-04-06 19:00:20 +08:00
    上 JA3 指纹吧,好多黑灰产还没卷到这一步
    Foxkeh
        53
    Foxkeh  
       2022-04-06 19:27:59 +08:00
    参考下微信换机后登录都是让用户发短信的,跟 @encro 提供的第一个思路一样
    ZC3746
        54
    ZC3746  
       2022-04-06 22:04:19 +08:00
    @hay313955795 简单粗暴有效
    cumt21g
        55
    cumt21g  
       2022-04-06 23:34:01 +08:00
    我的理解是别人蒙对了滑块验证,然后随便输入了个手机号,楼主的系统仍然向这个手机号发送了短信,导致扣钱,对么?
    morty0
        56
    morty0  
       2022-04-07 00:19:33 +08:00
    @XiLingHost 验证码挖矿
    XiaoBaiYa
        57
    XiaoBaiYa  
       2022-04-07 09:05:01 +08:00
    可以做几种验证码,提高验证难度
    zenxds
        58
    zenxds  
       2022-04-07 09:24:00 +08:00
    @Ds97 换一家验证码吧,阿里的不行
    NullData
        59
    NullData  
       2022-04-07 09:41:42 +08:00   1
    @spinecho 可能是在阮一峰的博客上看过他展示过的这个链接 https://git.sequentialread.com/forest/pow-captcha
    zwgf
        60
    zwgf  
       2022-04-07 11:03:36 +08:00
    @Ds97 #19 国外用户也没关系呀,twitter 或者 fb 、或者 google 授权登录一下再发送验证码,自己搞不定的转嫁给能搞定的公司。
    Ds97
        61
    Ds97  
    OP
       2022-04-07 11:32:22 +08:00
    @zenxds 控制台看到很多请求都被判断为风险和恶意请求了,但是拦截的数量不到十分之一吧
    vvjyun318
        62
    vvjyun318  
       2022-04-08 14:52:55 +08:00
    @Ds97 国内这运营商为了赚钱短信的收入也不放过,美国的短信都是不要钱,通过网络发延迟不到 1 秒
    @zwgf
    @NullData
    @Foxkeh
    ala2008
        63
    ala2008  
       344 天前
    注册还是登录?是不同业务场景
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2210 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 16:04 PVG 00:04 LAX 08:04 JFK 11:04
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86