import javax.servlet.http.HttpServletRequest;

/**

* 防SQL注入工具类

* 把SQL关键字替换为空字符串

* @author zhao

* @since 2015.7.23

*/

public class AntiSqlInjection {

public final static String regex = "'|%|--|and|or|not|use|insert|delete|update|select|count|group|union" +

"|create|drop|truncate|alter|grant|execute|exec|xp_cmdshell|call|declare|source|sql";

/**

* 把SQL关键字替换为空字符串

* @param param

* @return

*/

public static String filter(String param){

if(param == null){

return param;

}

return param.replaceAll("(?i)"+regex, "");//(?i)不区分大小写替换

}

/**

* 返回经过防注入处理的字符串

* @param request

* @param name

* @return

*/

public static String getParameter(HttpServletRequest request, String name){

return AntiSqlInjection.filter(request.getParameter(name));

}

public static void main(String[] args) {

//System.out.println(StringEscapeUtils.escapeSql("1' or '1' = '1; drop table test")); //1'' or ''1'' = ''1; drop table test

String str = "sElect * from test where id = 1 And name != 'sql' ";

String outStr = "";

for(int i=0; i<1000; i++){

outStr = AntiSqlInjection.filter(str);

}

System.out.println(outStr);

}

}

参考:

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

Java防止SQL注入的几个途径

java sql 工具类_Java防SQL注入工具类相关推荐

  1. java mysql 工具类_Java SE 之 数据库操作工具类(DBUtil)设计

    JDBC创建数据库基本连接 //1.加载驱动程序 Class.forName(driveName); //2.获得数据库连接 Connection connection = DriverManager ...

  2. java调用MySQL脚本_Java调用SQL脚本执行常用的方法示例

    前言 大家都知道,在Java中调用SQL脚本的方式有多种,在这里只记录一种自己常用的方式,个人觉得挺实用方便的. 运用ScriptRunner这个类. ScriptRunner类用于执行SQL语句,例 ...

  3. java封装对象实体类_Java 接口自动化系列--实体类之entity封装

    实体包entity下面有4个类,主要存放java对象,每个类必须有私有属性,空参构造,get set方法 具体excel中数据信息见---工具类excel文章 1.API类 解析excel中接口信息的 ...

  4. java.lang中所有的类_java.lang中的数学类

    Math 类 Java 中,讲 Math 类定义为 final 类,不能再派生子类. Math 类中定义的常量和方法都用 static 修饰符来修饰,因此不必创建 Math 类的实例,可以通过类名直接 ...

  5. java对象生命周期_Java对象生命周期和类生命周期

    原标题:Java对象生命周期和类生命周期 作者:彭空空 链接:https://www.jianshu.com/p/25ea857ba78b 导读 对象的生命周期 类的加载机制 类的生命周期 类加载器 ...

  6. java操作文件爱女_Java的IO操作---File类

    目标 1)掌握File类作用 2)可以使用file类中方法对文件进行读写操作. File类 唯一与文件有关的类.使用file类可进行创建或删除操作,要想使用File类,首先观察File类的构造方法. ...

  7. java 不能继承的类_java中不能继承的类有哪些?

    在Java中,只要是被定义为final的类,也可以说是被final修饰的类,就是不能被继承的. 因为jdk的开发者认为,有一些最基本的类没要必要对开发者开放,如果用户继承时操作有误,很可能引入很多问题 ...

  8. java构造一个水果类_Java基础入门之Object类、匿名内部类、构造方法的继承解析...

    前言 大家好,我是Java进阶者.这篇文章我们主要介绍Java基础中的Object类.匿名内部类.构造方法的继承知识,一起来学习下吧! 一.Object类 1.Object类是所有类的父类,所有类都继 ...

  9. java正则表达式类_java中正则表达式之Pattern类与Matcher类

    java中正则表达式之Pattern类与Matcher类 ======================================================================= ...

  10. java虚拟机预先加载哪些类_Java虚拟机JVM学习02 类的加载概述

    Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...

最新文章

  1. 文件句柄和文件描述符的区别和理解指针
  2. mysq 开启慢查询日志
  3. python---基础知识回顾(五)(python2.7和python3.5中的编码)
  4. 进程间的通信方式(二):管道Pipe和命令管道FIFO
  5. 集成学习算法之boosting、bagging和随机森林算法原理
  6. View.Post () 的身世大揭秘
  7. 【简便解法】1078 字符串压缩与解压 (20分)_42行代码AC
  8. Android Images
  9. [CentOs7]iptables防火墙安装与设置
  10. 算法面试题 java_【面试算法题】Java Stack 类的使用
  11. 贪吃蛇程序设计报告python_C某贪吃蛇程序设计报告.doc
  12. 电信网速怎么测试软件,电信网速测试在线(中国电信自助测速app)
  13. Cameralink光端机
  14. 攻防演练比赛中攻击队常用的测试方法列举
  15. 小程序如何复用公众号资质快速认证
  16. linux bash 自动补全,bash中的自动补全机制
  17. prolog与python_讲解:SENG201、Software、Python,Java/c++Web|Prolog
  18. 欧洲能源商品期货股票套利
  19. scrapy爬虫并保存数据库
  20. vue-print-nb 实现页面打印(含分页打印)

热门文章

  1. 计算机硬件 试题,计算机硬件试题150完整版
  2. UDP数据包的产生和发送
  3. Java下载及环境配置
  4. 北大中文核心期刊目录2021年 电工技术
  5. TOPSIS优劣解距离法
  6. 网站类项目商业计划书(转)
  7. 2020 农行笔试题——软开
  8. 新中大连接服务器文件,新中大服务器数据库未能连接
  9. 2017百度之星资格赛题解(1003、1004)
  10. 3GP转换器 Pro 3.5