1.限制了一个号码一分钟之内只能发一次 2.一个号码一个小时最多 6 次 3.一个 ip 一天最多 10 次 4.阿里云的滑块验证 以上的这些验证都是生效的,但还是被刷了上万条,都是换不同号码,号码前面部分是固定的,后面几位数随机的,ip 也是换着来的,有成百上千个 ip ,阿里云的滑块验证也通过了,用机器是怎么滑动那个滑块的啊,一脸懵逼。请问这种情况该怎么防啊
1
hay313955795 2022-04-06 09:47:09 +08:00 5
作为了程序员我之前就是这样让公司短信被盗刷将近 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
监控到异常情况时,把滑块验证切换到图形验证码,弄个复杂一点的验证码,基本上可以解决
|
7
hay313955795 2022-04-06 10:03:52 +08:00
@fumichael 这就是我司的人工 智能..
|
8
Ds97 OP @hay313955795 这方法有点骚,但是不符合我们的需求,有过几次盗刷了,但是在假期,而且都是休息时间,通知管理员了也不能及时去检查异常,不能及时打开通道
|
9
hay313955795 2022-04-06 10:08:43 +08:00
@Ds97 通道会影响到业务吗?如果不会可以试试达到阀值后让通道冷却几分钟...
|
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
oneisall8955 2022-04-06 10:44:28 +08:00
马克,求一个解决方案,感觉这类问题不太好处理呢
|
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
做为一个做短信的人给一下我们常为客户提供的解决方案吧
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
zpfhbyx 2022-04-06 12:45:29 +08:00
加个 ip 来源限制呗.. 请求页面跟下发短信要求 ip 一致..
|
32
ZE3kr 2022-04-06 13:24:05 +08:00
加几个 hCaptcha ,每通过一次验证码你都能挣钱,所以不亏。
|
33
XiLingHost 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
XiLingHost 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
YouKnowIt 2022-04-06 18:06:20 +08:00
lz 的公司规模多大,楼上很多层主都提供了不少好意见,但这些不是一个人能搞定的,你们现在有反作弊团队吗
|
51
shenqicai 2022-04-06 18:50:04 +08:00
阿里不是有智能验证吗?
|
52
ospider 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 1
@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
|