用Filter,
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.ilongman.acs.web.EncodingFilter</filter-class>
</filter>
<filter>
<filter-name>RemoteHostFilter</filter-name>
<filter-class>org.jboss.remotehostfilter.RemoteHostFilter</filter-class>
<init-param>
<param-name>allow</param-name>
<param-value>192.168.168.*,127.0.0.*,210.3.23.222,202.177.25.243,202.177.25.248</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>RemoteHostFilter</filter-name>
<url-pattern>/App/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
【108041217】:
package org.jboss.remotehostfilter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Accept or deny a request based on the IP address of the client who made the
* request. JDK 1.4 or higher is required.
*
* This filter is configured by setting the "allow" and/or "deny" properties to a comma-delimited list of regular expressions
* (in the syntax supported by the java.util.regex package) to which the client IP address will be compared.
*
* <filter>
* <filter-name>RemoteHostFilter</filter-name>
* <filter-class>org.jboss.remotehostfilter.RemoteHostFilter</filter-class>
* <init-param>
* <param-name>deny</param-name>
* <param-value>128.0.*,192.4.5.7</param-value>
* </init-param>
* <init-param>
* <param-name>allow</param-name>
* <param-value>192.4.5.6,127.0.0.*</param-value>
* </init-param>
* </filter>
*
* Evaluation proceeds as follows:
*
* If there are any deny expressions configured, the IP will be compared to each expression. If a match is found, this request will be rejected with a "Forbidden" HTTP response.
* If there are any allow expressions configured, the IP will be compared to each such expression. If a match is NOT found, this request will be rejected with a "Forbidden" HTTP response.
* Otherwise, the request will continue normally.
*
* @author Stan Silvert
*/
public class RemoteHostFilter implements Filter {
private String[] allow;
private String[] deny;
private FilterConfig filterConfig = null;
public RemoteHostFilter() {
}
/**
*
* @param request The servlet request we are processing
* @param result The servlet response we are creating
* @param chain The filter chain we are processing
*
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet error occurs
*/
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
String clientAddr = request.getRemoteAddr();
if (hasMatch(clientAddr, deny)) {
handleInvalidAccess(request, response, clientAddr);
return;
}
if ((allow.length > 0) && !hasMatch(clientAddr, allow)) {
handleInvalidAccess(request, response, clientAddr);
return;
}
chain.doFilter(request, response);
}
private void handleInvalidAccess(ServletRequest request,
ServletResponse response,
String clientAddr) throws IOException {
String url = ((HttpServletRequest)request).getRequestURL().toString();
((HttpServletResponse)response).sendError(HttpServletResponse.SC_FORBIDDEN);
}
private boolean hasMatch(String clientAddr, String[] regExps) {
for (int i=0; i < regExps.length; i++) {
if (clientAddr.matches(regExps[i])) return true;
}
return false;
}
/**
* Destroy method for this filter
*
*/
public void destroy() {
this.filterConfig = null;
this.allow = null;
this.deny = null;
}
/**
* Init method for this filter
*
*/
public void init(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
this.allow = extractRegExps(filterConfig.getInitParameter("allow"));
this.deny = extractRegExps(filterConfig.getInitParameter("deny"));
}
private String[] extractRegExps(String initParam) {
if (initParam == null) {
return new String[0];
} else {
return initParam.split(",");
}
}
/**
* Return a String representation of this object.
*/
public String toString() {
if (filterConfig == null) return ("ClientAddrFilter()");
StringBuffer sb = new StringBuffer("ClientAddrFilter(");
sb.append(filterConfig);
sb.append(")");
return (sb.toString());
}
}
转自:http://blog.sina.com.cn/s/blog_4ba7ee69010009b1.html
分享到:
相关推荐
Springboot过滤器禁止ip频繁访问功能实现是指在Springboot项目中,通过编写一个过滤器来限制ip频繁访问的功能实现。这项功能可以防止恶意ip的访问,保护服务器的安全。 首先,需要了解什么是过滤器。在Web开发中,...
例如,限制所有属于某个公司网络(可能拥有一个共同的前缀)的IP访问。 6. **IP地址的判断与转换**:在Java中,可以使用`java.net.InetAddress`类获取和解析IP地址。`InetAddress.getByName(ip)`可将字符串形式的IP...
- **配置**:在 `web.xml` 文件中使用 `<filter>` 和 `<filter-mapping>` 元素进行配置。 - **生命周期**:初始化、服务请求、销毁。 - **方法**:`init(FilterConfig config)`、`doFilter(ServletRequest ...
- **安全可靠**:可以通过存储过程限制用户对底层数据的访问。 #### 四、DOM与HTML标签 - **DOM(Document Object Model)**:一种表示和操作文档的标准方法。 - **HTML标签**:`<div>` 和 `<span>` 是常用的布局...
同时,可能还有IP过滤器,用于限制特定IP地址的访问,增强系统安全。 3. **JSP Tags**: JSP标签库是定制化HTML标签的集合,使得开发者能以更简洁、声明式的方式来处理页面逻辑。JSOS可能包含了自定义标签,如数据...
- 在图形用户界面设计中,形状控件可以用来显示圆形、椭圆等图形,但不能直接显示等边三角形(D)。这表明形状控件的使用有一定的限制。 ### 17. 控制结构与流程控制 - **Switch 语句的使用**: - 在C语言中,...
- **访问限制**:通过命名约定(如使用单下划线 `_` 或双下划线 `__`)实现私有成员。 - **继承和多态** - **继承**:子类继承父类的特性和行为。 - **多态**:不同类的对象可以响应相同的方法。 - **获取对象信息...
- **解析**: DNS(Domain Name System)服务将易于记忆的域名转换为IP地址,使得互联网上的资源更容易被访问。 #### 20. 大型数据库管理系统 - **知识点**: SQL Server属于大型数据库管理系统。 - **解析**: 相比于...
中间件是执行某些任务的代码段,位于请求处理链中的某个位置,它可以修改请求或响应,或者完全阻止请求。过滤器则允许开发者在请求被处理前或处理后执行操作,例如进行认证和授权检查。通过这些机制,我们可以拦截对...
既然我们想要实现无线连接,那能不能所有步骤下来都是无线的呢?答案是能的。 在 Android 设备上安装一个终端模拟器。 已经安装过的设备可以跳过此步。我使用的终端模拟器下载地址是:Terminal Emulator for ...
【ST0245-001】是一个与Java编程相关的学习资源,可能是某个课程、教程或项目的编号。由于没有提供具体的压缩包内容,我们只能根据"Java"这个标签来推测可能涵盖的知识点。Java是一种广泛应用的面向对象的编程语言,...
实现订制存储 3.1.4. 使用Zend_Auth 3.2. 数据库表认证 3.2.1. 简介 3.2.2. 高级使用:持久一个 DbTable 结果对象 3.2.3. 高级用法示例 3.3. 摘要式认证 3.3.1. 简介 3.3.2. 规范(Specifics) 3.3.3. ...