几项措施,让你的api不再裸奔

手机APP/开发
356
0
0
2022-03-31

随着移动互联网的兴起,如今的APP开发模式都是APP + api模式,如图


几项措施,让你的api不再裸奔api

由于app和api需要通过网络通信,api一般都是直接 对外的,所以api的访问安全就很重要了,api没有任何限制,或只有很简单的防护措施,这是很多新手容易犯的错误,一个漏洞,就可能让你的系统崩溃,数据泄露!

所以网络安全显得越来越重要了,api安全措施有很多,常用的如https、数据加密、url数据签名等方法。api防刷也属于接口安全的范畴。

今天就api防刷进行讨论一下:

基本分两种情况

1. 恶意访问

使用工具进行不停的循环访问,占用系统资源,影响系统正常的对外服务

2. 支付接口、短信发送接口等

这种接口直接会导致企业的损失,更要注意。

魔高一尺道高一丈,我们常用措施

1. 根据ip限制访问频率

限制访问,访问的时候记录用户IP

写到redis中,以ip为键,每次访问+1,有效期一个小时;

每访问一次就给这个IP+1,比如限制1w次,加到1W次就拒绝访问,直到记录过期,

这种方式简单粗暴,对于恶意攻击、爬虫抓取很有效果,但难免会有误伤,影响正常的访问请求。

2.验证码

一般在需要发送短信的地方,需要先输入验证码,验证码成功后才发送短信,如头条登录,先输入手机号,点发送会先跳出来下面这个东西,验证成功才进行下一步。

几项措施,让你的api不再裸奔验证码

通过验证码,可以限制很多的非法的接口访问了。

3. 限制发送频率

以头条为例,发送验证码频率限制为1次/分钟,再次发送只能等着

几项措施,让你的api不再裸奔频率限制

我以前做系统 ,也是对同一手机号发送有限制,同一功能的验证码限5次,所有功能限10次,这样一个手机号就刷不了很多了。

3. 后端逻辑验证

如果别人通过抓包完全看到你的请求,发送了完全相同的参数,进行重放攻击,如何防范呢?

这种可能访问被人抓了包,也可能是用户连续提交,签名和 access token这些措施是无效的。这时就需要server端进行判断了。

充值支付类的api,对订单的状态加以判断,已处理过的订单,不再重复处理。

增加时间戳,对于过期的请求不再处理。

4. 接口访问监控

一般来说,我们会有api访问监控,如果一个 ip访问频率异常,如果达到一定数量,我们可以系统报警通知管理员,将损失降到最小。

单一措施,很难完全做到接口安全,我们要综合运用多项措施,才能做到万无一失!