后端开发大湿们,短信发送防止接口被恶意调用的方案有没有好的建议(除了传统的图形验证码以外)

2020-06-05 13:12:29 +08:00
 xiaoyong

传统的图形验证码就不说了,还有没有其他的思路。

尤其是用户注册那一块,毕竟还没有任何登录用户的信息。

也不能太复杂,同时也需要兼顾开发成本和使用成本;不能为了安全,牺牲好用性。

5840 次点击
所在节点    程序员
43 条回复
yujiang
2020-06-05 13:18:46 +08:00
让用户往指定的号码发指定的短信
kucy
2020-06-05 13:22:29 +08:00
传参 rsa 加密
dangyuluo
2020-06-05 13:23:48 +08:00
参考下各大厂商典型的仿恶意注册服务?例如防水墙
skypyb
2020-06-05 13:26:30 +08:00
ip/手机号限流,验证方式升级(滑块、转图片之类的)
chendy
2020-06-05 13:26:33 +08:00
传统的图形验证码不行…那就滑动验证码?…
sidegem
2020-06-05 13:28:46 +08:00
短线服务厂商可以限制每个手机号发送的短信的频率吧
zzzmh
2020-06-05 13:36:46 +08:00
前端用 node webpack 打包,接口的请求头设置一个规则,例如时间戳+方法名+参数+域名算 MD5 截中间 8 位,后端校验请求头。
后端用 springboot 拦截器+redis 计数器,同 ip,每小时 10 次,同手机号每分钟 1 次。

再不行就没招了,加滑图形动验证码什么的。
kkeiko
2020-06-05 13:44:21 +08:00
你的目的是防刷接口,那前置的校验是没用的。
1. 接口要有签名,如果是 app,秘钥放在 app 里已经能挡住一大片人了,除非你这个东西有利可图,不然能破解 app 的高级攻击者没必要搞你。
2. 多维度频次限制,手机号、ip 、app 指纹、浏览器指纹等。
3. 复杂的图形验证码、滑块等组件,当前手机号触发的验证码通过后端校验通过才发短信。
4. 先要求绑定其他第三方账号体系,成功后才能注册你们的,等于是让已有完备用户信息的账号来帮你拦一道。
crab
2020-06-05 13:47:01 +08:00
验证码 IP 同号次数
waising
2020-06-05 13:48:19 +08:00
@yujiang #1 这...太流氓了 目前就见过建行 app 是这个操作
geekzhu
2020-06-05 13:55:46 +08:00
@waising #10 腾讯有一部分业务,不就一直这样么?
easonHHH
2020-06-05 13:56:14 +08:00
@waising #10 网易邮箱也有
wzq001
2020-06-05 14:09:11 +08:00
参考。。。12306,升级验证码策略
rogwan
2020-06-05 14:24:27 +08:00
1 、防无效手机号:限制 IP
2 、防大量 IP 请求:限制峰值频率
3 、防前端机器人:人机验证
4 、单次发送频率限制
5 、抛弃黑名单手机号请求

以上几点都做了,一般成本的攻击都没问题的。
iamverylovely
2020-06-05 14:31:32 +08:00
@sidegem 限制频率基本都有,不过别人恶意调用接口肯定不止一个,拿百来个这样的接口做轰炸机,每个发一两条短信就行了
zhongjun96
2020-06-05 15:00:18 +08:00
@waising #10 微信,QQ 注册都这样
akira
2020-06-05 15:02:32 +08:00
要求先登陆微信,唔。。。
mandy0119
2020-06-05 15:04:18 +08:00
首先定位 IP,这个 IP 的调用发短信的请求一律不走逻辑,直接返回成功。
然后,最重要的是如果手机号不存在不要给前端返回手机号不存在的信息,不管手机号是否有效都返回已发送。
很多人用这个接口是为了判断自己拿到的一批手机号是不是有效的。你返回给别人有效信息她就一直用你的调,如果你返回的信息对他无价值,时间长了他就不调你了。
lihongming
2020-06-05 15:12:05 +08:00
recaptcha v3 解千愁

不知 BAT 们有没有类似服务?
xcstream
2020-06-05 15:25:10 +08:00
不用 http 接口

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/678930

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX