首页 新闻 搜索 专区 学院

如何发送验证码的api被恶意调用?

0
悬赏园豆:50 [待解决问题]

发送验证码的api本身是不需要登录拿到用户票据(token)就可以使用的api,如果第三方攻击者知道api的参数使用方法,攻击得当的话,可以一次性消耗掉n条短信,并且恶意发送到大量的手机号码上,或者被短信轰炸机利用。

通过什么方式可以防范恶意的调用,除了限制ip地址调用次数或者加上图形验证这种策略外,还用什么其他方式?

代码乱了的主页 代码乱了 | 菜鸟二级 | 园豆:208
提问于:2016-07-18 22:38
< >
分享
所有回答(5)
0

加身份验证咯

seayxu | 园豆:5468 (大侠五级) | 2016-07-18 23:28

忘记密码这类短信本身是不需要身份验证的,除非加图像验证码

支持(0) 反对(0) 代码乱了 | 园豆:208 (菜鸟二级) | 2016-07-18 23:30

@代码乱了: 这个是一种方法,而且验证码难度越大越好

支持(0) 反对(0) seayxu | 园豆:5468 (大侠五级) | 2016-07-18 23:33
0

一般情况下不是每个手机号重复发送需要间隔嘛.

而且其实发送短信验证码接口都是要输入图片验证码的只是一般人很少去做

吴瑞祥 | 园豆:28891 (高人七级) | 2016-07-18 23:31
0

1、增加次数限制。

2、身份认证。

3、忘记密码这种公开的短信功能,可以考虑让客户发送短信给你。

幻天芒 | 园豆:36662 (高人七级) | 2016-07-18 23:35
0

限制发短信次数呗

AnonymouL | 园豆:1769 (小虾三级) | 2016-07-19 08:36
0

我说说我现在接口的做法:

第一,接口调用会核对身份,我指的身份,是指,调用这个接口的身份是不是我们服务器本身,或者是合法请求。具体的做法是:每次发回一个唯一时间戳+随机数和时间戳加密加密字符串,这个加密算法只有我们自己知道。每个时间戳只能用一次。

第二,每种验证码,每个手机号,需要间隔60秒才能重新请求,每天每个手机号每种类型的验证码只允许请求三次(这个需要你结合你们自己的业务自己定)

第三,每个IP每分钟只允许请求一个验证码。

第三点,虽然ip可以通过代理等方式解决,但是能增加对方的成本。互联网本身就是这样子,有时候,没有最安全,只有更安全,你增加了对方作恶的成本,或者人家就找下一个。人家也会想没必要在你这里死磕。要多加各种手段,增加对方非法调用的成本即可。

以上。

LoveCoder | 园豆:6 (初学一级) | 2016-07-19 09:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册