`
wuneng94zui
  • 浏览: 34939 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java写的一个防注入的filter

    博客分类:
  • java
阅读更多
1.首先编写一个PreventIntoScriptFilter.java,代码如下
package com.questionnaire.common.filter;

import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class PreventIntoScriptFilter implements Filter {

private static Log log = LogFactory.getLog(PreventIntoScriptFilter.class);

@Override
public void destroy() {

}

@SuppressWarnings("deprecation")
@Override
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
try {
String s = request.getQueryString();
if (s != null) {
// System.out.println("+++++++++++++++++++++++" + s);
Pattern pattern = Pattern
.compile("(?i)[|;$@'\"<>()+,\\\\#]|%7C|%3B|%24|%40|%27|%22|%3C|%3E|%28|%29|%2B|%2C|%5C|%23");
Matcher matcher = pattern.matcher(s);
if (matcher.find()) {
String s3 = s
.replaceAll(
"(?i)[|;$@'\"<>()+,\\\\#]|%7C|%3B|%24|%40|%27|%22|%3C|%3E|%28|%29|%2B|%2C|%5C|%23",
"%20");
// System.out.println("+++++++++++++++++++++++" + s3);
response.sendRedirect(request.getRequestURL() + "?" + s3);
}
}
} catch (Exception e) {
log.error("PreventIntoScriptFilter 出错了:" + e);
}
chain.doFilter(request, response);
}

@Override
public void init(FilterConfig filterConfig) throws ServletException {

}

}
2.在web.xml中添加如下配置即可
<filter>
<filter-name>preventIntoScriptFilter</filter-name>
<filter-class>com.questionnaire.common.filter.PreventIntoScriptFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>preventIntoScriptFilter</filter-name>
<url-pattern>*.view</url-pattern>
</filter-mapping>
0
2
分享到:
评论
5 楼 桥下一粒砂 2011-10-24  
黑名单?

4 楼 wuneng94zui 2011-10-21  
(?i)[|;$@'\"<>()+,\\\\#]|%7C|%3B|%24|%40|%27|%22|%3C|%3E|%28|%29|%2B|%2C|%5C|%23
(?i)表示不区分大小写匹配
[|;$@'\"<>()+,\\\\#]表示中括号内的字符都将被匹配,替换掉这些注入常用的字符
|%7C|%3B|%24|%40|%27|%22|%3C|%3E|%28|%29|%2B|%2C|%5C|%23表示中括号内字符的hex编码
3 楼 csuzm0613 2011-10-20  
里面一段正则看起来好费劲,楼主能解释下思路不,学习之
2 楼 wuneng94zui 2011-10-20  
就和*.jsp *.action一样
1 楼 cry615 2011-10-20  
*.view不知过滤的是那些东西啊

相关推荐

    java防sql注入攻击过滤器

    本篇文章将深入探讨如何在Java中实现一个防SQL注入的过滤器,以及它的重要性。 SQL注入的原理是利用应用程序处理用户输入数据时的不足,将恶意SQL语句嵌入到原本合法的查询中。例如,如果一个登录接口的用户名字段...

    Java防止SQL注入的几个途径

    Java 防止 SQL 注入是一个非常重要的安全问题。SQL 注入攻击是黑客最常用的攻击方式之一,它可以让攻击者访问或修改数据库中的敏感信息。因此,防止 SQL 注入是 Java 开发者必须注意的安全问题。 1.杜绝 SQL 拼接 ...

    SQL注入过滤 (Java版)

    本篇将详细探讨Java环境下如何实现一个SQL注入过滤器,并结合`web.xml`配置文件来部署和应用。 首先,我们需要了解SQL注入的基本原理。当用户输入的数据未经验证或转义就直接拼接到SQL查询语句中时,就可能发生SQL...

    java 过滤器filter防sql注入的实现代码

    首先,我们需要创建一个实现了`javax.servlet.Filter`接口的类,例如名为`XSSFilter`。这个类将负责拦截请求并处理可能存在的SQL注入风险。下面是一个简单的`XSSFilter`示例: ```java public class XSSFilter ...

    防止sql注入的url过滤器【java filter】

    为了解决这一问题,我们可以利用Java的Filter机制来创建一个防止SQL注入的URL过滤器。下面将详细介绍这个过滤器的工作原理、配置方法以及如何有效地防止SQL注入。 首先,我们需要理解SQL注入的基本概念。SQL注入是...

    预防XSS攻击和SQL注入XssFilter

    一、什么是XSS攻击 XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如...

    java web Xss及sql注入过滤器.zip

    Java Web 开发中,安全是至关重要的一个环节。XSS(Cross Site Scripting)和 SQL 注入是两种常见的Web应用程序安全漏洞,它们可能导致数据泄露、用户权限被滥用甚至整个系统的瘫痪。本项目"java web Xss及sql注入...

    防止sql注入demo

    我们可以创建一个自定义Filter,如`PreventSQLInject.java`,在这个Filter中,对请求参数进行检测和净化: - 检查请求参数是否包含SQL关键字或特殊字符。 - 使用正则表达式去除或转义可能的SQL注入字符。 - 如果...

    防止sql注入的java代码

    本文将详细分析一个用于防止SQL注入的Java过滤器类——`Checksql`。 #### 类结构与功能 `Checksql`类实现了`javax.servlet.Filter`接口,主要负责对HTTP请求中的参数进行检查,以确保其不包含可能导致SQL注入攻击...

    JAVA项目实践,URL存在跨站漏洞,注入漏洞解决方案.docx

    ### JAVA项目实践:URL存在的跨站漏洞与注入漏洞解决方案 #### 一、跨网站脚本(XSS)概述 跨网站脚本(Cross-site scripting,通常简称为XSS或跨站脚本攻击)是一种常见的安全漏洞攻击方式,尤其针对网站应用程序。...

    主要使用Filter针对Xss攻击,sql注入,服务器访问白名单,以及csrf进行安全校验

    3,服务器白名单为单独的一个工具包,在文章最后给出 4,文章开发环境为JDK1.8,使用SpringBoot框架进行开发 5,文章会分享出整个Filter文件包,包含四个java文件: 5.1,public class CrosXssFilter implements ...

    filter 防sql注入支持替换不合格字符

    网上很多不支持替换,自己改了个 可以替换不合格的字符。filter 别忘了在WBM.XML加上

    Java防止xss攻击附相关文件下载

    你可以创建一个自定义Filter,对所有请求参数进行遍历,并对特殊字符进行转义。 2. **覆盖Servlet的getParameter方法**: Servlet API允许覆盖`getParameter`方法,这样在获取请求参数时就可以添加额外的安全检查...

    java sql注入l

    -- 防止SQL注入的过滤器 --&gt; 72 &lt;filter&gt; 73 &lt;filter-name&gt;antiSqlInjection&lt;/filter-name&gt; 74 &lt;filter-class&gt;com.tarena.dingdang.filter.AntiSqlInjectionfilter&lt;/filter-class&gt; 75 &lt;/filter&gt; 76 ...

    防止SQL注入和XSS攻击Filter

    - **执行流程**:当请求到达时,Filter首先创建一个`XssHttpServletRequestWrapper`实例,然后将该实例传递给Filter链中的下一个组件。这样做的目的是确保所有后续组件都使用了经过过滤的请求对象。 - **实现细节**...

    Java登录注册列表小项目和Filter测试代码

    在Java编程领域,"Java登录注册列表小项目和Filter测试代码"是一个常见的实践项目,它涵盖了Web应用程序开发中的基础功能,如用户身份验证、权限控制以及数据操作。在这个项目中,开发者通常会创建一个简单的用户...

    Java_Filter过滤机制详解.doc

    Filter本身并不是一个Servlet,因此它不能直接生成响应,但它可以在请求到达目标Servlet之前对其进行预处理,或者在请求离开Servlet后对其进行后处理。 Filter的功能非常强大,可以实现以下几种操作: 1. **在...

    java filter

    `Filter`作为Java Web开发中的一个重要组成部分,提供了强大的功能和灵活性。通过合理地设计和使用`Filter`,可以极大地提升应用程序的安全性和用户体验。理解`Filter`的工作原理及其配置方法对于Java Web开发者来说...

    JAVA中防止SQL注入攻击类的源代码

    在本篇文章中,我们将分析一个用于JAVA中的防止SQL注入攻击的类——`StringUtils`,该类包含了用于过滤用户输入以防止SQL注入的功能,并且还提供了一些辅助方法来增强应用的安全性。 #### 二、源代码解析 ##### 1....

    JAVA防止XSS注入,附jar包

    4. **Filter过滤器**:在`web.xml`配置文件中,可以定义一个名为`XSSFilter`的过滤器,该过滤器会在每个HTTP请求到达控制器之前拦截并处理潜在的XSS注入。过滤器可以应用到所有请求或者特定的URL模式。 5. **使用...

Global site tag (gtag.js) - Google Analytics