- 浏览: 93291 次
- 性别:
文章分类
最新评论
-
softkid:
pool中的string对象会不会被GC回收啊?
String s = new String("abc");你真的了解吗??? -
sarsgetaway:
[b]public String readTemple(Str ...
jsp生成html -
phoenix:
建议增加web.xml关于此filter的配置文件
用于检测用户是否登陆的过滤器
昨天接到领导指示,要对地市的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>
希望能给用到的朋友减少一下负担,呵呵
发表评论
-
类的初始化顺序---你真的明白吗???^_^
2007-11-13 17:09 709^_^基础知识,要是不很明白的就看看吧。^_^ public ... -
最重要的十几个J2EE 最佳实践
2007-01-06 09:25 687简介在过去的 5 年中,已经有许多人写了关于 J2E ... -
J2EE项目10大风险
2007-01-06 09:53 888当你开始着手组织一个 ... -
把java本地程序配置在windows服务来运行[转载]
2007-01-07 15:27 1109步骤如下: 0 ... -
JSP 2.0: The New Deal, Part 1 [转载]
2007-01-08 15:18 773期待已久的日子即将到来: 最新版 ... -
showDialog的JSP应用
2007-01-16 16:17 1880用于解决在一个页面上 ... -
showModalDialog和showModelessDialog使用心得
2007-01-20 13:23 843一、showModalDialog和showMod ... -
JBoss启动过程
2007-01-28 09:28 8361. o ... -
J2EE开发之常用开源项目介绍
2007-01-28 09:49 807主要就我所了解的J2EE开发的框 ... -
frame中隐藏横向滚动条
2007-01-28 17:50 2589在网吧客户端项目中使用了frame的方式,布局如下:遇到的问题 ... -
jsp生成html
2007-01-31 18:31 2173从网上找到了两种方法都是大同小异,经过 ... -
编写你自己的单点登录(SSO)服务
2007-02-01 15:06 1194摘要 ... -
HttpClient入门
2007-02-01 15:07 784HttpClient 是 Apache Jakarta Com ... -
跨domain的SSO
2007-02-01 15:31 910在我写了SSO的文章以后,有几个网友希望我能提一提跨domai ... -
jfreechart例子
2007-02-07 10:44 4161一、饼图<%@ page language=" ... -
JSP避免Form重复提交的三种方案
2007-02-12 08:57 8831、javascript ,设置一个变量,只允许提交一次。 ... -
flash对联广告
2007-02-14 16:35 757<html><head></he ... -
什么是Portlet ?
2007-03-09 08:37 937作者:Sunil Patil; observer ... -
在J道上看到的:RoR可否替代J2EE?
2007-03-17 14:40 1221... -
[转载]session详解
2007-03-21 08:36 816這篇文 ...
相关推荐
IP地址过滤限制系统 IP地址过滤限制系统
如果想禁止指定的ip或者主机名来拒绝某些机器访问,或者指定某些机器来访问。
防止国外IP访问及攻击国内服务器功能,包含最近国外IP地址段的列表,根据配置来进行IP拦截,具体配置如下: 1、上传安装包 安装包为ZIP压缩包:ipfirewall.zip,利用SSH工具上传到服务器上,执行如下指令解压: ...
* sourceIp、sourceMask参数:源IP地址和掩码 * sourcePort参数:源端口号。等于0表示不指定端口。 * destinationIp、destinationMask参数:目的地址、目的掩码。 * destinationPort参数:目的端口。等于0...
String remoteHost=request.getRemoteHost(); log.info("Request from host:"+remoteHost); //判断客户计算机IP地址是否合法,以127开头的表示不合法,禁止访问
给QQ wry纯真数据库IP地址过滤的工具,非常好用!!!
python windows系统日志文件evtx解析,过滤指定事件,根据IP地址解析出实际物理地址
在公司局域网网络管理中,有时候我们处于某种网络管理的需要而需要禁止局域网电脑访问公网某个ip,禁止访问某些...笔者汇总了几种最常用的路由器过滤ip地址、路由器限制ip访问和路由器屏蔽端口的方法,可以供网友参考。
IP地址的过滤,开通和关闭 IP地址的过滤,开通和关闭 IP地址的过滤,开通和关闭
本教程中以实际例子介绍了过滤器的运行方式,以JSP开发中常见的中文乱码过滤器和限抽客户机IP访问的二个例子,本教程中代码部分转载,都经过本人修改了其中错误,加了详细注释,保证可以正常运行,希望对大家有所帮助
* sourceIp、sourceMask参数:源IP地址和掩码 * sourcePort参数:源端口号。等于0表示不指定端口。 * destinationIp、destinationMask参数:目的地址、目的掩码。 * destinationPort参数:目的端口。等于0表示不指定...
路由器基础设置之TP-Link路由器如何设置IP地址过滤
ADD_IP_HOOKADDR :添加过滤IP地址,回调函数判断IP包,以决定是放弃还是通过(新命令) DEL_IP_HOOKADDR :删除过滤IP地址(新命令) ADD_IP_HOOKPORT :添加过滤端口号(新命令) DEL_IP_HOOKPORT :删除过滤...
防火墙IP地址及端口过滤整理.pdf
行业分类-设备装置-基于IP地址绑定过滤多媒体业务量的方法和系统
3 自定义IP地址段过滤 4 系统实时拦截任何访问不良站点的网络行为,并返回警告页面信息给用户端。 审计能力要求 多种游戏和即时通讯的分析 系统不仅分析了常见的协议,还对多种游戏和即时通讯协议进行了分析 游戏:...
express-ipfilter, 基于轻权IP地址的连接过滤系统 基于IP地址的实时过滤系统这个软件包提供了简单的基于IP的访问控制。 这可以以通过对某些ip和白名单进行白名单来实现,或者者对它的他ip进行白名单。 版本0.3.1安装...
用户IP地址所在地记录,jsp程序 src\ipaddr IPEntry.java IPSeeker.java Test1.java Test.java Utils.java
Qt获取IP地址、MAC地址等网卡信息,区分本地网卡、无线网卡和虚拟网卡