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