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

随着移动互联网的兴起 , 如今的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不再裸奔

文章插图
频率限制
【几项措施,让你的api不再裸奔】我以前做系统  , 也是对同一手机号发送有限制 , 同一功能的验证码限5次 , 所有功能限10次 , 这样一个手机号就刷不了很多了 。
3. 后端逻辑验证
如果别人通过抓包完全看到你的请求 , 发送了完全相同的参数 , 进行重放攻击 , 如何防范呢?
这种可能访问被人抓了包 , 也可能是用户连续提交 , 签名和 access token这些措施是无效的 。这时就需要server端进行判断了 。
充值支付类的api , 对订单的状态加以判断 , 已处理过的订单 , 不再重复处理 。
增加时间戳 , 对于过期的请求不再处理 。
4. 接口访问监控
一般来说 , 我们会有api访问监控 , 如果一个 ip访问频率异常 , 如果达到一定数量 , 我们可以系统报警通知管理员 , 将损失降到最小 。
单一措施 , 很难完全做到接口安全 , 我们要综合运用多项措施 , 才能做到万无一失!




    推荐阅读