传统的图形验证码就不说了,还有没有其他的思路。
尤其是用户注册那一块,毕竟还没有任何登录用户的信息。
也不能太复杂,同时也需要兼顾开发成本和使用成本;不能为了安全,牺牲好用性。
1
yujiang 2020-06-05 13:18:46 +08:00 via Android
让用户往指定的号码发指定的短信
|
2
kucy 2020-06-05 13:22:29 +08:00
传参 rsa 加密
|
3
dangyuluo 2020-06-05 13:23:48 +08:00
参考下各大厂商典型的仿恶意注册服务?例如防水墙
|
4
skypyb 2020-06-05 13:26:30 +08:00 via Android
ip/手机号限流,验证方式升级(滑块、转图片之类的)
|
5
chendy 2020-06-05 13:26:33 +08:00
传统的图形验证码不行…那就滑动验证码?…
|
6
sidegem 2020-06-05 13:28:46 +08:00
短线服务厂商可以限制每个手机号发送的短信的频率吧
|
7
zzzmh 2020-06-05 13:36:46 +08:00
前端用 node webpack 打包,接口的请求头设置一个规则,例如时间戳+方法名+参数+域名算 MD5 截中间 8 位,后端校验请求头。
后端用 springboot 拦截器+redis 计数器,同 ip,每小时 10 次,同手机号每分钟 1 次。 再不行就没招了,加滑图形动验证码什么的。 |
8
kkeiko 2020-06-05 13:44:21 +08:00 5
你的目的是防刷接口,那前置的校验是没用的。
1. 接口要有签名,如果是 app,秘钥放在 app 里已经能挡住一大片人了,除非你这个东西有利可图,不然能破解 app 的高级攻击者没必要搞你。 2. 多维度频次限制,手机号、ip 、app 指纹、浏览器指纹等。 3. 复杂的图形验证码、滑块等组件,当前手机号触发的验证码通过后端校验通过才发短信。 4. 先要求绑定其他第三方账号体系,成功后才能注册你们的,等于是让已有完备用户信息的账号来帮你拦一道。 |
9
crab 2020-06-05 13:47:01 +08:00
验证码 IP 同号次数
|
13
wzq001 2020-06-05 14:09:11 +08:00
参考。。。12306,升级验证码策略
|
14
rogwan 2020-06-05 14:24:27 +08:00
1 、防无效手机号:限制 IP
2 、防大量 IP 请求:限制峰值频率 3 、防前端机器人:人机验证 4 、单次发送频率限制 5 、抛弃黑名单手机号请求 以上几点都做了,一般成本的攻击都没问题的。 |
15
iamverylovely 2020-06-05 14:31:32 +08:00
@sidegem 限制频率基本都有,不过别人恶意调用接口肯定不止一个,拿百来个这样的接口做轰炸机,每个发一两条短信就行了
|
16
zhongjun96 2020-06-05 15:00:18 +08:00
@waising #10 微信,QQ 注册都这样
|
17
akira 2020-06-05 15:02:32 +08:00
要求先登陆微信,唔。。。
|
18
mandy0119 2020-06-05 15:04:18 +08:00
首先定位 IP,这个 IP 的调用发短信的请求一律不走逻辑,直接返回成功。
然后,最重要的是如果手机号不存在不要给前端返回手机号不存在的信息,不管手机号是否有效都返回已发送。 很多人用这个接口是为了判断自己拿到的一批手机号是不是有效的。你返回给别人有效信息她就一直用你的调,如果你返回的信息对他无价值,时间长了他就不调你了。 |
19
lihongming 2020-06-05 15:12:05 +08:00 via iPhone
recaptcha v3 解千愁
不知 BAT 们有没有类似服务? |
20
xcstream 2020-06-05 15:25:10 +08:00
不用 http 接口
|
22
weizhen199 2020-06-05 15:42:01 +08:00
运营商那边不是限定模板的嘛?
|
24
wzq001 2020-06-05 15:59:27 +08:00
|
25
woshipanghu 2020-06-05 16:03:40 +08:00
https://007.qq.com/
图形验证码 |
27
arrow8899 2020-06-05 17:13:57 +08:00
直接对接第三方的账号体系应该是最简单的
|
28
cdkkkx 2020-06-05 17:23:50 +08:00
对接腾讯免费接口
|
29
azoon 2020-06-05 17:47:37 +08:00
腾讯那个防水墙现在要收费了。手机验证码必须搞第三方的个人机验证,我试过很多方法都没用,最后还是靠腾讯的服务才搞定。
|
30
wysnylc 2020-06-05 17:57:26 +08:00
手机号频率限制,ip 限制 用 redis 做
|
31
gluttony 2020-06-05 18:26:46 +08:00
本机号码一键免密登录,比短验加图形验证码方便快速的多。创蓝闪验、极光认证都提供该服务,用户量大的话可以直接找三大运营商接入。
|
32
coolcoffee 2020-06-05 18:45:00 +08:00
@gluttony 这个要让用户开流量访问吧,体验太差了。
|
33
Xusually 2020-06-05 18:48:16 +08:00
接入第三方防刷验证服务
其他的办法不用尝试了,无解 |
34
murmur 2020-06-05 18:49:20 +08:00
没有,图形验证码已经弱爆了,忘了哪个网站新的验证码要求给一个图形旋转到“正常角度”,你在玩我么
|
35
collery 2020-06-05 18:51:24 +08:00
有个极验的平台,可以做二维码的
|
36
jerryrib 2020-06-05 18:53:24 +08:00
腾讯防水墙
|
37
xuanbg 2020-06-06 08:19:35 +08:00
对于攻击者来说,几乎所有的验证方法都会在高频调用这一招下失效。成功率低又如何,我可以提高频率到每秒攻击十万百万次,还是能够 1 秒钟轻松艹你千百次。
所以真正能有效降低攻击频率的,是限流或者是低频的验证,如谷歌 Authenticator 这种动态密码。强制让所有人都只能 1 分钟只能访问一次,那就随便你攻击了。 |
38
mostkia 2020-06-06 08:36:06 +08:00
一般大厂都做了好几层防护,首先会调用验证码,但如果有好事的用户手动反复多次通过接口发送了消息后,会分支出两种常见策略:1,直接临时停止对此 IP 的授权,关闭接口。2,改为让用户反向发送指定信息的消息到某个号码上。后者更人性化,因为无法避免一些正常用户因小概率的事件导致一直无法收到验证码,但部署成本可能比前者会高一些,前者直接后台累加到阈值阻断发送即可。
|
39
mostkia 2020-06-06 08:37:58 +08:00
当然还有最常见的倒计时冷却,这个几乎在验证码里都是标配的,没必要特别说明
|
40
Ravenddd 2020-06-06 09:17:22 +08:00
加黑名单,弄个计数器频率高的就封他 24 小时之类的,错多少次就封他几个小时之类的
|
41
inktiger 2020-06-06 09:38:58 +08:00
作为一名爬虫工程师,我觉得对这个要看防御到什么程度,取个适中方案,要想完全防御,那不可能,你只有增加别人恶意的成本,他成本高了,你也就安全了。
后端的话,可以用 ip 来控制每分钟获取验证码,但如果是别人换 IP 的话就不好搞,毕竟对于真想搞你的人来说,搞不同 IP 很简单,所以最好在获取短信验证码前加一层保护,如验证码,滑块、加减法、或者输入一串数字里你指定颜色的数字为验证码最终数等来防御,其实我觉得就滑块对用户而言就挺简单,而且对于恶意刷的成本也够高,要恶意刷,可能得用真实浏览器模拟用户操作,外加上还要算上生成不同 IP 来搞你,正常点的人不会抽风来专门刷的 |
42
yukiloh 2020-06-06 15:07:52 +08:00 via Android
需要 sign 的就可以抵挡一票人…就算人家会破也懒得弄,浪费时间…
|
43
zzw1998 2020-06-07 03:15:31 +08:00 via iPhone
@lihongming 话说 recaptcha v3 现在在国内可以正常用了吗
|