如何实现ip地址拉黑(过滤器类)
2023-09-27 14:19:45 时间
一、过滤器
过滤器(Filter)可以动态地拦截请求和响应。
◼ 应用场景:过滤敏感词汇、防止SQL注入、设置字符编码、进行URL级
别的权限访问控制、压缩响应信息等。
二、过滤器编程步骤
1、创建过滤器类
编写 Java 类实现 Filter 接口(主要是实现 doFilter() 方法);
过滤器类使用注解 @WebFilter 标注,并配置过滤 url。
过滤器类基本代码框架:
@WebFilter("/*") // 当前配置拦截所有请求
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
if(某条件){
//拦截处理
}
else{
chain.doFilter(request, response); // 放行
}
}
}
2、加载过滤器
在 Spring Boot 启动类上添加 @ServletComponentScan 注解。
三、实战代码
本例 IP 黑名单以 127.0.0.1 和 localhost 为例:
以下请求均被过滤:
http://localhost:8080/
http://127.0.0.1:8080/
MyFilter.java
@ServletComponentScan
@WebFilter("/*")
public class MyFilter implements Filter {
//黑名单 简单模拟一下
private List<String> IPList=new ArrayList<>();
@Override
public void init(FilterConfig filterConfig) throws ServletException { //过滤器初始化
IPList.add("127.0.0.1"); // 本机地址
IPList.add("0:0:0:0:0:0:0:1"); // IPv6 的本机地址
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws
IOException, ServletException {
//黑名单过滤
String ip = servletRequest.getRemoteAddr(); // 获得客户端 ip 地址
System.out.println(ip); //控制台上查看一下
if( IPList.contains(ip) ){
servletResponse.setContentType("text/html;charset=utf-8"); //设置响应的字符集(避免中文乱码)
servletResponse.getWriter().println("你已被列入黑名单!");
}
else{
filterChain.doFilter(servletRequest,servletResponse); //放行
}
}
}
四、效果
相关文章
- 【视频开发】ONVIF客户端搜索设备获取rtsp地址开发笔记(精华篇)
- 【NAT网络地址转换(私网公网地址、静态NAT、动态NAT、NAPT、Easy IP、NAT Server)】-20211215、20211216
- xcode git修改远程仓库地址
- [转]Google 全球 IP 地址库
- webapi获取请求地址的IP
- Git 切换远程仓库的地址
- linux进程的地址空间,核心栈,用户栈,内核线程
- Oracle 10gR2 & 10.2.0.5 的百度网盘下载地址 :) [已更新链接]
- async-validator -- git地址
- 如何禁止虚拟机自动获取DHCP分配的ip地址
- css中图片的四种地址引用
- 百度地图点击地图显示地址详情的默认方法怎么关闭,去掉百度地图api图标信息
- 公网、网关、路由器、内网、交换机、调制解调器、子网掩码、mac地址、如何设置固定ip等等
- C++ 获取计算机系统的mac地址
- linux下配置ip地址四种方法(图文方法)
- 如何从主机获取 Docker 容器的 IP 地址
- 用函数SendARP()获取局域网计算机的MAC地址
- 算法:整数与ip地址转换
- linux下修改ip地址,默认网关以及DNS
- 2019-9-9-dotnet-获取本机-IP-地址方法
- linux下修改ip地址,默认网关以及DNS