学习笔记-接口防刷解决方案
应用背景
在后端应用中暴露的对外接口需要考虑爬虫,恶意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/学习笔记-接口防刷解决方案/