当前位置: 首页 > news >正文

API接口防刷-IP限制

IP限制防刷

  1. 创建一个拦截器类或者过滤器类,实现HandlerInterceptor接口或者Filter接口。

  2. 在拦截器类或者过滤器类的实现中,获取请求的IP地址。

  3. 配置需要限制的IP地址列表,可以将这些IP地址存储在一个配置文件中,或者直接在代码中定义一个列表。

  4. 在拦截器类或者过滤器类的实现中,判断请求的IP地址是否在限制的IP地址列表中,如果在列表中则继续处理请求,否则返回一个错误信息或者拒绝请求。

  5. 在Spring Boot项目的配置类中,将拦截器或者过滤器注册到应用程序中。

  6. 使用拦截器实现IP限制的代码:

    public class IPInterceptor implements HandlerInterceptor {private static final List<String> ALLOWED_IPS = Arrays.asList("127.0.0.1", "192.168.0.1");@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String ipAddress = request.getRemoteAddr();if (ALLOWED_IPS.contains(ipAddress)) {response.setStatus(HttpServletResponse.SC_FORBIDDEN);response.getWriter().write("Access denied");return false;}return true;}
    }
  7. 这里的IP,我们写死放java代码里了,实际项目中,我们可能会配置在配置文件中、或专门用一张表来存储,然后把表里的数据缓存到Redis中,每次请求就直接从redis获取即可,放在redis中可以减轻数据库压力以及提醒AIP接口性能。ALLOWED_IPS列表中包含了不允许访问的IP地址,如果请求的IP地址在列表中,则返回"Access denied"错误信息,并且设置响应的状态码为403(Forbidden)

相关文章:

  • 对某登录站点的JS前端逆向思路
  • 删除文件夹或文件时提示文件不存在
  • Nacos 注册中心下载到搭建详细步骤【微服务】
  • 51单片机蜂鸣器发出悦耳的声音
  • Doris 数据导入二:Stream Load 方式
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • php获取过去一段的时间范围
  • repo常用命令解析(持续更新)
  • 公网穿透和RTC
  • 【HuggingFace Transformer库学习笔记】基础组件学习:Tokenizer
  • 【Excel】WPS快速按某列查重数据
  • 安装vscode插件与安装vue项目
  • 4-Docker命令之docker kill
  • 45. 跳跃游戏 II
  • SCI一区级 | Matlab实现GWO-CNN-LSTM-selfAttention多变量多步时间序列预测
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • co.js - 让异步代码同步化
  • ES6系列(二)变量的解构赋值
  • flask接收请求并推入栈
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • mysql 数据库四种事务隔离级别
  • Python十分钟制作属于你自己的个性logo
  • Wamp集成环境 添加PHP的新版本
  • 阿里云前端周刊 - 第 26 期
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 区块链分支循环
  • 使用 @font-face
  • 学习笔记TF060:图像语音结合,看图说话
  • hi-nginx-1.3.4编译安装
  • 回归生活:清理微信公众号
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​MySQL主从复制一致性检测
  • ​一些不规范的GTID使用场景
  • # include “ “ 和 # include < >两者的区别
  • #etcd#安装时出错
  • #HarmonyOS:基础语法
  • $forceUpdate()函数
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (二)springcloud实战之config配置中心
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (四)图像的%2线性拉伸
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)http-server应用
  • (转)Oracle 9i 数据库设计指引全集(1)
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .Net转前端开发-启航篇,如何定制博客园主题