栖霞司法行政网:为Tomcat写了一个增强的可以限制浏览器和防盗链过滤器提交到Tomcat的bug里被拒了:(
来源:百度文库 编辑:中财网 时间:2024/05/04 17:43:12
通过 Tomcat的配置可以限制某些主机访问,或者禁止某些IP地址访问。
根据这个思路,我写了一个增强功能的Class,通过灵活的配置,实现可以禁止某些浏览器访问,或者只允许某些浏览器的访问,
而且,还可以用来防盗链。但是Tomcat的 bug管理人员认为这个没有必要,非要让大家自己去用过滤器来实现:(
先给配置信息示例:
上面的代码表示,禁止用户用httpunit访问,和禁止localhos等盗链连接。
具体的java代码在:
package org.apache.catalina.valves;
import java.io.*;
import javax.servlet.*;
import org.apache.catalina.connector.*;
/**
*
Title: Request Header Filter For Tomcat
*
Description:
* eg: set follow coment in ${catalina.home}/conf/server.xml:
*
* then you can forbidden someone use httpunit to Access the Engine ,Host or Context
* or:
*
* then you can forbidden someone open the link from *.mydomain.com or localhost
*
*
Copyright: Apache License Version 2.0
*
Company: lizongbo
* @author lizongbo @ gmail.com
* @version 1.0
*/
public final class RequestHeaderValve
extends RequestFilterValve {
private String header = "";
public void invoke(Request request, Response response) throws IOException,
ServletException {
String headervalue = request.getRequest().getHeader(getHeader());
headervalue = headervalue != null ? headervalue : "";
process(headervalue, request, response);
}
public String getHeader() {
return header;
}
public void setHeader(String header) {
this.header = header;
}
}
编译好的class必须放到:
%TOMCATHOME%\server\classes\org\apache\catalina\valves
例如: "D:\jakarta-tomcat-5.5.7
\server\classes\org\apache\catalina\valves\RequestHeaderValve.class.class"
bug 提交在:
http://issues.apache.org/bugzilla/show_bug.cgi?id=33632
申请了一个Google group,也在这里放了一份:
http://groups-beta.google.com/group/lizongbo/browse_thread/thread/07389803736c635e/1ee8442eee5231d9