使用Filter过滤非法IP
有些web系统中会遭受一些不友好的访问,例如在论坛中发送不健康的帖子,博客留言中骂人,这时可以将该用户的ip地址封掉,即该ip地址发出request请求后不进行处理,这时就可以使用Filter来实现。
首先创建一个IPUtil类,里面初始化一些要禁止的IP(实际开发中会从数据库中读取),有时也可将某些ip段屏蔽,例如:192.168.1.*,此时在该ip段内的用户是无法访问系统的,缺点是可能会屏蔽正常访问系统的用户。
package com.monkey1024.util;
import java.util.ArrayList;
import java.util.List;
public class IPUtil {
private static List<String> ipList = new ArrayList<>();
static {
ipList.add("192.168.1.102");
ipList.add("0:0:0:0:0:0:0:1");//本机的ip
}
public static List<String> getIpList() {
return ipList;
}
}
然后创建Filter过滤器来过滤ip,如果请求的ip在禁用ip段内,就会直接return,即该请求不会到达目标资源就会被response:
package com.monkey1024.filter;
import com.monkey1024.util.IPUtil;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
import java.util.List;
@WebFilter(filterName = "Filter",urlPatterns = "/*")
public class Filter implements javax.servlet.Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
String ip = req.getRemoteAddr();
List<String> ipList = IPUtil.getIpList();
System.out.println(ip);
if (ipList.contains(ip)) {
System.out.println("非法ip");
resp.getWriter().write("非法ip");
return;
}
chain.doFilter(req, resp);
}
public void init(FilterConfig config) throws ServletException {
}
}
在项目的根目录下创建一个index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
hello
</body>
</html>
启动tomcat,访问系统,被禁用的ip用户是无法访问index.jsp的
海报
0 条评论
171
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~