学习笔记-接口防刷解决方案

应用背景

在后端应用中暴露的对外接口需要考虑爬虫,恶意DDOS,接口防刷等防范。针对不同的系统业务不同,其有的接口需要登入后才能进行访问,有的接口无需。针对不同情况细化其防刷方案。

技术方案

防刷功能主要分为两个部分:确定其为恶意用户+确定其盗刷后处理方式

如何确定其为恶意用户

细粒度划分:网页>session>ip

1、当前网页

优点:无
缺点:没有任何意义,一刷新页面用户的身份就变了

2、session

优点:伪造成本一般(可以理解成一个浏览器对应了一个用户)
缺点:当用户手动清除 cookie 的时候即失效

3、ip

优点:伪造成本高
缺点:要考虑一个公司、一个小区的人一般会共享一个 ip,所以适当的要放宽对单一 ip 的请求限制
ip 信息是存在请求头里的,而 https 对请求本身做了加密,可以防止 ip 信息被伪造或篡改。所以推荐服务器采用 https 传输。

确定其盗刷后处理方式

1.中断处理,直接忽略,返回提示信息
2.添加验证码验证,进一步判断是否是而已刷

落地实现

基于Redis+SessionId+自定义注解实现
注解:RequestLimit.java
拦截器:RequestLimitIntercept.java
Redis配置: RedisConfig.java

相关资料

相关案例 https://cloud.tencent.com/developer/article/1753960
https://www.cnblogs.com/xjnotxj/p/9024962.html


学习笔记-接口防刷解决方案
https://mikeygithub.github.io/2021/11/05/yuque/学习笔记-接口防刷解决方案/
作者
Mikey
发布于
2021年11月5日
许可协议