自从上次接入钉钉监控后。今天早上起来发现测试环境 公告信息接口 凌晨3点100多条NPE告警~
第一个反应接口被异常访问:这个接口没有定时任务等任何调用的可能~
果然查看ZIPKIN发现了类似如下的请求:
确定问题后,查看代码逻辑,果然该服务的所有接口都没有进行auth2校验,但是业务需要部分接口不能权限校验(例如:不登录就访问)
解决步骤:
1、无须暴露的接口增加auth2校验
2、日志中增加IP地址的打印,方便查看日志时候显示请求来源
反思:
项目中由于业务需要(不登录就访问)直接访问的接口,如何进行有效控制?
1、调用方增加签名等合法性校验(本质说和auth2一种方式)
优点:安全性高
缺点:简单接口确增加了调用端和接收端交互的复杂性
2、网关增加请求控制(IP的黑白名单。IP访问次数等)
优点:统一的处理,针对业务更灵活可配置~
缺点:实现更复杂
那么网关中IP访问限制和黑白名单如何做,需要解决以下几个问题:
1、如何识别正常访问和异常访问?(一段时间同一接口访问次数太多?高峰期和低峰期是否不同?)
2、IP访问异常后拒绝策略是什么?(一段时间访问访问异常接口不能访问?高峰期和低峰期是否不同?)
3、是否不同业务的识别方法和拒绝策略不一样?(有些接口访问频率高,有些访问频率低?)
4、有些业务是否之后IP在白名单中才能访问?(只对第三方提供的接口?)
5、IP访问异常的通知?(请求被识别为异常是否通知到服务维护人员?)