`

java类过滤器,防止页面sql注入

    博客分类:
  • java
 
阅读更多
 
[java] view plaincopy
 
  1. package com.tarena.dingdang.filter;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.Enumeration;  
  5.   
  6. import javax.servlet.Filter;  
  7. import javax.servlet.FilterChain;  
  8. import javax.servlet.FilterConfig;  
  9. import javax.servlet.ServletException;  
  10. import javax.servlet.ServletRequest;  
  11. import javax.servlet.ServletResponse;  
  12. import javax.servlet.http.HttpServletRequest;  
  13.   
  14. public class AntiSqlInjectionfilter implements Filter {  
  15.   
  16.     public void destroy() {  
  17.         // TODO Auto-generated method stub  
  18.     }  
  19.       
  20.     public void init(FilterConfig arg0) throws ServletException {  
  21.         // TODO Auto-generated method stub  
  22.     }  
  23.       
  24.     public void doFilter(ServletRequest args0, ServletResponse args1,  
  25.             FilterChain chain) throws IOException, ServletException {  
  26.         HttpServletRequest req=(HttpServletRequest)args0;  
  27.         HttpServletRequest res=(HttpServletRequest)args1;  
  28.          //获得所有请求参数名  
  29.         Enumeration params = req.getParameterNames();  
  30.         String sql = "";  
  31.         while (params.hasMoreElements()) {  
  32.             //得到参数名  
  33.             String name = params.nextElement().toString();  
  34.             //System.out.println("name===========================" + name + "--");  
  35.             //得到参数对应值  
  36.             String[] value = req.getParameterValues(name);  
  37.             for (int i = 0; i < value.length; i++) {  
  38.                 sql = sql + value[i];  
  39.             }  
  40.         }  
  41.         //System.out.println("============================SQL"+sql);  
  42.         //有sql关键字,跳转到error.html  
  43.         if (sqlValidate(sql)) {  
  44.             throw new IOException("您发送请求中的参数中含有非法字符");  
  45.             //String ip = req.getRemoteAddr();  
  46.         } else {  
  47.             chain.doFilter(args0,args1);  
  48.         }  
  49.     }  
  50.       
  51.     //效验  
  52.     protected static boolean sqlValidate(String str) {  
  53.         str = str.toLowerCase();//统一转为小写  
  54.         String badStr = "'|and|exec|execute|insert|select|delete|update|count|drop|*|%|chr|mid|master|truncate|" +  
  55.                 "char|declare|sitename|net user|xp_cmdshell|;|or|-|+|,|like'|and|exec|execute|insert|create|drop|" +  
  56.                 "table|from|grant|use|group_concat|column_name|" +  
  57.                 "information_schema.columns|table_schema|union|where|select|delete|update|order|by|count|*|" +  
  58.                 "chr|mid|master|truncate|char|declare|or|;|-|--|+|,|like|//|/|%|#";//过滤掉的sql关键字,可以手动添加  
  59.         String[] badStrs = badStr.split("\\|");  
  60.         for (int i = 0; i < badStrs.length; i++) {  
  61.             if (str.indexOf(badStrs[i]) >= 0) {  
  62.                 return true;  
  63.             }  
  64.         }  
  65.         return false;  
  66.     }  
  67. }  
  68.   
  69.   
  70. <!--在web.xml文件中的配置-->  
  71. <!-- 防止SQL注入的过滤器 -->  
  72.     <filter>  
  73.         <filter-name>antiSqlInjection</filter-name>  
  74.         <filter-class>com.tarena.dingdang.filter.AntiSqlInjectionfilter</filter-class>  
  75.     </filter>  
  76.     <filter-mapping>  
  77.         <filter-name>antiSqlInjection</filter-name>  
  78.         <url-pattern>/*</url-pattern>  
  79.     </filter-mapping> 
分享到:
评论

相关推荐

    java过滤器防sql注入

    外网可能会被攻击,简单的处理可以避免! 外网可能会被攻击,简单的处理可以避免! 外网可能会被攻击,简单的处理可以避免! 外网可能会被攻击,简单的处理可以避免!...外网可能会被攻击,简单的处理可以避免!...

    java防sql注入攻击过滤器

    为了防止此类攻击,开发者通常会使用一种称为“SQL注入过滤器”的机制。本篇文章将深入探讨如何在Java中实现一个防SQL注入的过滤器,以及它的重要性。 SQL注入的原理是利用应用程序处理用户输入数据时的不足,将...

    SQL注入过滤 (Java版)

    为了解决这个问题,我们可以创建一个名为`SqlInjectionFilter`的Java过滤器,该过滤器将在HTTP请求到达实际处理请求的Servlet之前运行。过滤器的主要任务是检查请求参数,确保它们不包含任何可能导致SQL注入的恶意...

    sql注入Java过滤器

    配置在web.xml中,可以防止SQL注入,可以自己定义一些需要过滤的特殊字符

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

    本项目"java web Xss及sql注入过滤器.zip"就是针对这两种威胁提供的一种解决方案,基于流行的Spring Boot 2.0框架进行开发。 XSS 攻击是通过在网页中插入恶意脚本,当其他用户访问该页面时,这些脚本会被执行,从而...

    防止sql注入过滤器配置

    ### 防止SQL注入过滤器配置详解 #### 一、引言 在现代Web应用开发中,安全性一直是至关重要的方面。SQL注入攻击是黑客常用的一种手段,它通过恶意SQL语句来破坏或操纵数据库中的数据。为了保护系统免受此类攻击,...

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

    本文将详细介绍如何使用Java Filter实现防止SQL注入的功能。 首先,我们需要创建一个实现了`javax.servlet.Filter`接口的类,例如名为`XSSFilter`。这个类将负责拦截请求并处理可能存在的SQL注入风险。下面是一个...

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

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

    mybatis如何防止SQL注入

    在使用MyBatis框架开发应用程序时,合理使用参数绑定技术(如`#{}`)以及对动态参数进行有效的过滤处理是防止SQL注入的关键。通过对MyBatis的正确配置和编程实践,可以大大降低应用程序面临的SQL注入风险,确保系统...

    防止sql注入demo

    下面我们将深入探讨SQL注入的基本原理、为何需要防止以及如何在Java中实现过滤器(Filter)来防止此类攻击。 1. SQL注入基础: SQL注入是由于应用程序未能正确验证和清理用户输入的数据导致的。当用户提交的输入被...

    防止sql注入的java代码

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

    struts2技巧,笔记.zip指定404,500页面 utf-8过滤器 防SQL注入 解决乱码

    这个压缩包文件包含了一系列与Struts2相关的技术点,主要集中在错误页面配置、字符编码问题、防止SQL注入和Struts2框架的特性上。以下是这些知识点的详细解释: 1. **错误页面配置**: 在Web应用中,当请求无法...

    filter过滤器防止恶意注入

    本示例中的`URLfilter`类就是一个简单的过滤器,它的主要目的是...总的来说,`URLfilter`展示了如何使用Java过滤器来防止SQL注入攻击的一个基本思路,但在实际应用中,需要结合更全面的安全策略来提高系统的安全性。

    java过滤器,防止XSS、SQL

    java过滤器,XSS : 跨站脚本攻击(Cross Site Scripting),SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令

    Java过滤器,字符过滤,标签过滤

    这在处理用户输入或者显示网页内容时特别有用,可以防止SQL注入、XSS攻击等安全问题,同时确保数据在不同系统间正确传输。 首先,让我们了解一下Java过滤器的基础知识。在Java Servlet规范中,Filter接口定义了过滤...

    sql注入与防止

    下面是一个简单的Java Filter示例,展示了如何通过过滤器来防止SQL注入攻击: ```java public class SQLFilter implements Filter { private String inj_str = "'|and|exec|insert|select|delete|update|count|*|%...

    java 防sql注入代码

    很强大的防SQL注入,针对JAVA系统 方便使用,作为过滤器使用。

    预防XSS攻击和SQL注入XssFilter

    一、什么是XSS攻击 ...三、过滤器配置 web.xml配置 &lt;filter-name&gt;XssFilter &lt;filter-class&gt;com.xxx.Filter.XssFilter&lt;/filter-class&gt; &lt;filter-name&gt;XssFilter &lt;url-pattern&gt;/* &lt;/filter-mapping&gt;

    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注入的5种方法总结

    以下是对防止SQL注入的五种方法的详细说明: 1. 使用参数化查询(PreparedStatement) 参数化查询是预防SQL注入最有效的方法之一。在Java中,可以使用PreparedStatement对象来执行预编译的SQL语句。预编译的SQL...

Global site tag (gtag.js) - Google Analytics