一次非核心接口(信息提示类)被刷引发的思考

自从上次接入钉钉监控后。今天早上起来发现测试环境 公告信息接口 凌晨3点100多条NPE告警~

第一个反应接口被异常访问:这个接口没有定时任务等任何调用的可能~

果然查看ZIPKIN发现了类似如下的请求:

确定问题后,查看代码逻辑,果然该服务的所有接口都没有进行auth2校验,但是业务需要部分接口不能权限校验(例如:不登录就访问) 

解决步骤:

  1、无须暴露的接口增加auth2校验

  2、日志中增加IP地址的打印,方便查看日志时候显示请求来源

反思:

 项目中由于业务需要(不登录就访问)直接访问的接口,如何进行有效控制?

 1、调用方增加签名等合法性校验(本质说和auth2一种方式)

      优点:安全性高

      缺点:简单接口确增加了调用端和接收端交互的复杂性

 2、网关增加请求控制(IP的黑白名单。IP访问次数等)

     优点:统一的处理,针对业务更灵活可配置~

     缺点:实现更复杂

那么网关中IP访问限制和黑白名单如何做,需要解决以下几个问题:

1、如何识别正常访问和异常访问?(一段时间同一接口访问次数太多?高峰期和低峰期是否不同?

2、IP访问异常后拒绝策略是什么?(一段时间访问访问异常接口不能访问?高峰期和低峰期是否不同?

3、是否不同业务的识别方法和拒绝策略不一样?(有些接口访问频率高,有些访问频率低?

4、有些业务是否之后IP在白名单中才能访问?(只对第三方提供的接口?

5、IP访问异常的通知?(请求被识别为异常是否通知到服务维护人员?)

原文地址:https://www.cnblogs.com/mxmbk/p/9569438.html