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

Java防SQL注入工具类

阅读更多

 

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注入

http://www.oschina.net/code/snippet_811941_14131

Java防止SQL注入的几个途径

http://helloklzs.iteye.com/blog/1329578

 

分享到:
评论
1 楼 Nami_Sup 2017-12-29  
mysql的注释符号“-- ”,“#”,“/**/”要加上吗?

相关推荐

    java过滤器防sql注入

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

    SQL注入漏洞检测原型工具

    SQL注入漏洞是网络安全领域中的一个重要话题,它允许恶意用户通过输入特定的SQL代码来操纵数据库,获取、...通过学习和使用这个工具,我们可以提升对SQL注入的理解,增强应用程序的安全性,防止数据泄露和恶意攻击。

    基于ESAPI的防sql注入jar包及使用示例.rar

    在提供的文件中,`ESAPIUtils.java`是一个工具类,封装了ESAPI的一些常用方法,用于执行安全的数据库操作。例如,它可能包含如下方法: ```java public static String escapeSQL(String untrustedInput) { return ...

    防止sql注入demo

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

    动态拼接sql语句工具类,拼接where后面语句

    动态拼接sql语句工具类,拼接where后面语句 配合原生jdbc仿动态sql注入 if (ObjectUtil.isNotEmpty(maxLat)&&ObjectUtil.isNotEmpty(minLat)){ sqlParamList.add(new SqlParam("lat",minLat, SqlOpEnum.GE)); ...

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

    5. **单元测试和集成测试**:为了确保过滤器和SQL注入防护的有效性,项目可能包含了一些测试用例,使用JUnit和Mockito等工具模拟请求和数据库交互,验证安全措施是否正常工作。 总之,这个项目提供了预防XSS和SQL...

    SQL注入原理以及Spring Boot如何防止SQL注入(含详细示例代码)

    SQL注入是一种严重的安全威胁,它允许攻击者通过在应用程序的输入字段中插入恶意SQL代码来执行未经授权的数据库...Spring Boot通过提供JdbcTemplate和Spring Data JPA等工具,为开发者提供了防止SQL注入的有效手段。

    自己动手编写SQL注入漏洞扫描工具

    标题中的“自己动手编写SQL注入漏洞扫描工具”指的是创建一个能够自动检测Web应用程序是否存在SQL注入漏洞的软件。SQL注入是一种常见的网络安全威胁,攻击者通过在输入字段中插入恶意的SQL语句来操纵数据库,获取...

    SqlUtils工具类,Sql IN 条件拼接工具类

    这与JDBC的PreparedStatement相配合,可以防止SQL注入攻击,并且提高了执行效率。 在实际使用中,`SqlUtils`可能还包含了其他辅助方法,比如处理`NOT IN`条件、动态构建`WHERE`子句等。这些方法通常会结合使用`...

    Java开发工具类

    - QrcodeUtils.java\防止SQL注入和XSS攻击Filter\获取文件绝对路径最后的文件夹名称\加密工具类 - CryptoUtils.java\日期工具类 - DateUtil.java\图片处理工具类 - ImageUtils.java\文件相关操作工具类——FileUtils...

    Java校验参数工具类

    这是自己开发的一个参数校验的工具类,可用于对实例的属性进行非空校验。包括全部校验和任一校验两种校验方式。 举例:CheckParamsUtils.checkParamsAll(requestBean, "name", "age","gender");

    利用JDBC工具类的方式实现mysql数据库的连接并且完成登录相关功能(防sql注入方式)

    在本示例中,我们将探讨如何使用JDBC(Java Database Connectivity)工具类与MySQL数据库建立连接,并实现登录功能,同时重点介绍如何利用PreparedStatement防止SQL注入攻击。 首先,JDBC是Java语言访问数据库的...

    java的sql解析器jsqlparser

    1. **SQL审核**:确保用户输入的SQL符合安全标准,防止SQL注入攻击。 2. **代码生成**:根据业务逻辑动态生成SQL,比如在ORM框架中,可以根据实体类生成对应的SELECT、INSERT、UPDATE和DELETE语句。 3. **SQL优化**...

    java-sql-inspector:用于测试Java代码是否存在SQL注入漏洞的实用程序

    总的来说,Java SQL Inspector是开发过程中一个宝贵的辅助工具,能够帮助团队提高代码安全性,防止SQL注入攻击。结合良好的编程习惯和安全意识,开发者可以构建更健壮、更安全的应用程序,保障用户的数据安全。

    java开发基于SQLmap的SQL注入工具源码.zip

    Java开发基于SQLmap的SQL注入工具源码是一个用于学习和理解SQL注入原理和技术的项目。SQL注入是一种常见的网络安全漏洞,攻击者可以通过构造恶意SQL语句来获取或篡改数据库中的敏感信息。本项目以开源的Python工具...

    java与SQL Server2000的连接

    PreparedStatement允许预编译SQL,提高性能,防止SQL注入。 4. **执行SQL**:使用Statement或PreparedStatement的`executeQuery()`或`executeUpdate()`方法执行SQL查询或更新。 5. **处理结果集**:如果执行的是...

    解决Sql注入的类(C#版,Java版可效仿)

    本篇文章将深入探讨如何解决SQL注入问题,特别是针对C#编程环境,但Java开发者也可以从中获得灵感。 首先,我们需要理解SQL注入的基本原理。当用户输入的数据直接拼接到SQL查询语句中时,攻击者可以通过构造特殊的...

    Java开发的sql生成器

    7. **安全防护**:防止SQL注入攻击,通过预编译或转义特殊字符等方式确保SQL语句的安全性。 在Java中实现这样的SQL生成器,可能涉及到的技术有: - **JDBC(Java Database Connectivity)**:Java连接数据库的标准...

    java自定义服务器检验工具类

    在Java编程领域,自定义服务器检验工具类是开发者为了实现特定的服务器验证功能而创建的类。这样的工具类通常包含了各种方法,用于检查输入数据的有效性、处理服务器端的业务逻辑以及确保系统的安全性。以下是对这个...

    JAVA 连接sqlserver类 已封装好 & sqljdbc.jar

    2. **预编译SQL语句**: 使用`java.sql.Connection.prepareStatement()`创建预编译的`PreparedStatement`对象,这样可以提高性能,避免SQL注入问题。 3. **执行SQL语句**: 包括`executeQuery()`用于执行查询,`...

Global site tag (gtag.js) - Google Analytics