昨天接到领导指示,要对地市的IP地址进行过滤,晕了,过滤啥呀,不过想归想,那还得做不是,呵呵
开始想在服务器<Tomcat>上整一下呢,仔细一看不行,附Tomcat过滤IP方法:
限制ip,限制主机访问:
如果想禁止指定的ip或者主机名来拒绝某些机器访问,或者指定某些机器来访问。
也支持分别按Engine, Host, or Context,进行以下配置:
<Context path="/examples" ...> ...
<Valve className="org.apache.catalina.valves.RemoteHostValve"
allow="*.mycompany.com,www.yourcompany.com"/>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
deny="192.168.1.*"/>
</Context>
参考:
http://jakarta.apache.org/tomcat/tomcat-5.0-doc/config/context.html
没辙,继续...
因为要过滤的IP有七十二组<(58.87.96.0 58.57.121.255),(219.147.0.0 219.147.0.211)>想到用正则表达式,因为本人对正则表达式这东西,实在不精,呵呵,也就没敢用,呵呵
最终在于朋友交流后,采取如下形式解决的:
一、新建一xml配置文件,将要过滤的IP段写入;
二、新建一Filter,完成过滤要求
代码如下所示:
IP.XML
<?xml version="1.0" encoding="UTF-8"?>
<root id="allow">
<group>
<start>122.6.192.0</start>
<end>122.6.255.255</end>
</group>
<group>
<start>219.146.208.0</start>
<end>219.146.215.255</end>
</group>
<group>
<start>222.174.224.0</start>
<end>222.174.255.255</end>
</group>
</root>
Filter如下所示:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import javax.xml.parsers.*;
public class FilterServlet extends HttpServlet implements Filter {
private Document doc=null;
private FilterConfig filterConfig;
//Handle the passed-in FilterConfig
private String encoding = "GBK";
public void init(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
}
//Process the request/response pair
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) {
HttpServletResponse httpResp = null;
HttpServletRequest httpReq = null;
try {
String reqip = request.getRemoteHost();
if(null != reqip){
reqip = reqip.replace('.','_');
}
String[] temp = reqip.split("_");
int[] ip = new int[temp.length];
for(int i=0;i<temp.length;i++){
ip[i] = new Integer(temp[i]).intValue();
}
if (response instanceof HttpServletResponse) {
httpReq = (HttpServletRequest)request;
httpResp = (HttpServletResponse)response;
if(!viewXml(httpReq.getRealPath("/")+"/WEB-INF/ip.xml",ip)){
httpResp.sendRedirect("
http://welcome.sd.vnet.cn/
");
}
filterChain.doFilter(request, response);
}
}
catch (ServletException sx) {
filterConfig.getServletContext().log(sx.getMessage());
}
catch (IOException iox) {
filterConfig.getServletContext().log(iox.getMessage());
}catch(Exception e){
filterConfig.getServletContext().log(e.getMessage());
}
}
/**
* 验证请求IP是否符合要求
* @param xmlFile
* @return
* @throws Exception
*/
public boolean viewXml(String xmlFile,int[] ip) throws Exception {
int[] test = ip;
boolean flag = true;
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
doc=db.parse(new File(xmlFile));
Element root = doc.getDocumentElement();
NodeList list = root.getElementsByTagName("group");
for (int i=0; i < list.getLength() ; i++) {
Element element = (Element)list.item(i);
NodeList titleid = element.getElementsByTagName("start");
Element idElement = (Element)titleid.item(0);
String ip1 = idElement.getFirstChild().getNodeValue();
ip1 = ip1.replace('.','_');
String[] ip1s = ip1.trim().split("_");
Integer[] ipl1 = new Integer[ip1s.length];
for(int a=0;a<ip1s.length;a++){
ipl1[a] = new Integer(ip1s[a]);
}
NodeList titleList = element.getElementsByTagName("end");
Element titleElement = (Element)titleList.item(0);
String ip2 = titleElement.getFirstChild().getNodeValue();
ip2 = ip2.replace('.','_');
String[] ip2s = ip2.trim().split("_");
Integer[] ipl2 = new Integer[ip2s.length];
for(int b=0;b<ip2s.length;b++){
ipl2[b] = new Integer(ip2s[b]);
}
long test_value = test[0]*255*255*255+test[1]*255*255+test[2]*255+test[3];
long ip1_value = ipl1[0]*255*255*255+ipl1[1]*255*255+ipl1[2]*255+ipl1[3];
long ip2_value = ipl2[0]*255*255*255+ipl2[1]*255*255+ipl2[2]*255+ipl2[3];
if(test_value >= ip1_value && test_value <= ip2_value){
return true;
}
}
return false;
}
public void destroy() {
filterConfig = null;
encoding = null;
}
}
WEB.XML如下:
<filter>
<filter-name>filterservlet</filter-name>
<filter-class>com.lvke.web.qcbst.util.common.FilterServlet</filter-class>
</filter>
<filter-mapping>
<filter-name>filterservlet</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
希望能给用到的朋友减少一下负担,呵呵
分享到:
相关推荐
"IP地址段的过滤,限制IP,限制主机访问"这个主题涉及到如何通过编程手段实现对网络访问的精细化管理,尤其是在Java Web环境中。以下是一些相关的知识点: 1. **IP地址与主机名**:IP地址是互联网上设备的唯一标识...
【IP地址过滤限制系统】是一种网络管理技术,用于控制网络访问权限,确保网络安全并防止恶意活动。该系统通过识别和管理接入网络的设备IP地址,实现对特定用户或设备的访问权限设定。以下是对该系统及其相关文件的...
例如,通过查询这个数据库,可以快速识别某个IP地址属于哪个国家或地区,有助于实现流量分析、安全过滤等功能。 标签中的“IP对应地区”是指IP地址与地理位置的关系。每个IP地址都由互联网分配机构(如IANA)分配给...
IP地址过滤是一种网络安全技术,用于控制网络流量和保护系统免受恶意IP的侵害。在这个场景中,"IP地址过滤"指的是利用QQ wry纯真数据库来实现这一功能的工具。 QQ wry纯真数据库是一个广泛使用的中国地区IP地址库,...
防止国外IP访问及攻击国内服务器功能,包含最近国外IP地址段的列表,根据配置来进行IP拦截,具体配置如下: 1、上传安装包 安装包为ZIP压缩包:ipfirewall.zip,利用SSH工具上传到服务器上,执行如下指令解压: ...
String remoteHost=request.getRemoteHost(); log.info("Request from host:"+remoteHost); //判断客户计算机IP地址是否合法,以127开头的表示不合法,禁止访问
* sourceIp、sourceMask参数:源IP地址和掩码 * sourcePort参数:源端口号。等于0表示不指定端口。 * destinationIp、destinationMask参数:目的地址、目的掩码。 * destinationPort参数:目的端口。等于0...
1. IP地址范围:每个IP地址段都有一个起始IP和结束IP,用于定义一个连续的IP地址集合。 2. 地理位置:包括国家、地区、城市等不同级别的地理位置信息,便于定位IP地址所在的位置。 3. AS编号(自治系统号):对应于...
10. **应用场景**:IP地址库广泛应用于网站访问统计、内容过滤、广告定向、网络安全、路由规划、服务器负载均衡等多个领域。 综上所述,MySQL最新IP地址库是一个强大的工具,它能够帮助企业和开发者更好地理解和...
标题中的“行业分类-设备装置-基于IP地址绑定过滤多媒体业务量的方法和系统”表明了这个压缩包内容涉及的是信息技术领域,特别是与网络设备和多媒体业务处理相关的技术。描述中的内容与标题一致,进一步强调了这是一...
1. **网络安全管理**:通过识别这些特定的IP地址段,可以更有效地管理和过滤来自辽宁省的网络流量,提高网络安全水平。 2. **地理定位服务**:对于提供基于位置的服务的应用程序来说,这些IP地址段可以帮助识别用户...
在网络设备配置中,可以利用正则表达式来过滤和管理大量的IP地址信息。 总之,“IP地址的正则表达式”不仅展示了正则表达式的强大功能,也揭示了在处理网络通信和数据验证中正则表达式的实用价值。理解和掌握这一...
本教程将探讨如何使用Python来解析EVTX日志,过滤特定事件,并根据IP地址解析出实际的物理地址。 首先,我们需要了解Python中的`xml.etree.ElementTree`库,这是Python标准库的一部分,用于处理XML数据。EVTX文件...
IP地址库的Excel版本可能包含工作表,列出了IP地址及相关属性,便于用户进行过滤、排序和分析。 6. **MySQL原始数据文件**:.frm、.myd和.myi是MySQL数据库的存储引擎文件。.frm文件存储表结构信息,.myd存储数据,...
IP地址是由32位二进制组成的,通常被分为四段,每段8位,以十进制形式表示,中间用点号分隔,如192.168.0.1。在实际应用中,我们主要处理IPv4地址,但随着网络设备的增加,IPv6也逐渐被采纳。 在Java中,`java.net`...
从给定的信息中,我们可以看出这是一份关于甘肃省IP地址段的列表,这些IP段用于标识互联网上位于甘肃省内的服务器、设备或网络节点。在IT领域,了解特定地区的IP地址范围对于网络安全、地理定位服务、数据隐私保护...
这样,任何尝试从被拒绝的IP地址访问应用的请求都将被重定向到`rejectedIPError.jsp`页面。 总的来说,Filter在Java Web开发中扮演着至关重要的角色,它可以用来处理各种任务,包括但不限于防止中文乱码、控制...
"国内外活跃IP段IP库"是一个集合了全球范围内活动中的IP地址范围的数据资源。这个数据集通常包含了国内(中国)和国外(其他国家和地区)的IP地址段,为网络分析、网络安全、流量监测等应用提供重要的基础信息。 IP...