博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 防止 SQL 注入工具类
阅读量:6431 次
发布时间:2019-06-23

本文共 1721 字,大约阅读时间需要 5 分钟。

hot3.png

package cn.manmanda.api.util; import javax.servlet.http.HttpServletRequest;/** * 防止SQL注入工具类 * @author  * @date 2017/12/29 15:39 */public class AntiSQLInjectionUtil {//	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";		public final static String regex = "'|and|exec|execute|insert|select|delete|update|count|drop|*|%|chr|mid|master|truncate|" +                "char|declare|sitename|net user|xp_cmdshell|;|or|-|+|,|like'|and|exec|execute|insert|create|drop|" +                "table|from|grant|use|group_concat|column_name|" +                "information_schema.columns|table_schema|union|where|select|delete|update|order|by|count|*|" +                "chr|mid|master|truncate|char|declare|or|;|-|--|+|,|like|//|/|%|#";	/**	 * 把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 AntiSQLInjectionUtil.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 = AntiSQLInjectionUtil.filter(str);		}		System.out.println(outStr);	}	}

 

转载于:https://my.oschina.net/NamiZone/blog/1596710

你可能感兴趣的文章
公积金联名卡——提取公积金用,用身份证即可办理
查看>>
Windows Azure Virtual Network (6) 设置Azure Virtual Machine固定公网IP (Virtual IP Address, VIP) (1)...
查看>>
有效的域名后缀列表
查看>>
python 多线程笔记(4)-- 车站售票模拟
查看>>
走在网页游戏开发的路上(二)
查看>>
8个经过证实的方法:提高机器学习模型的准确率
查看>>
Java读写二进制文件示例
查看>>
使用模板元编程快速的得到斐波那契数。。
查看>>
A strange lift
查看>>
MapGuide 开发Tips----自定义设置 FDO的连接池个数
查看>>
探索ASP.NET MVC5系列之~~~3.视图篇(下)---包含常用表单和暴力解猜防御
查看>>
Unity 4.6 GUI
查看>>
pgpool-II3.1 的内存泄漏(七)
查看>>
深度学习笔记之关于基本思想、浅层学习、Neural Network和训练过程(三)
查看>>
Java-字符串反转
查看>>
项目管理部分随笔索引
查看>>
触摸屏学习笔记---自容与互容【原创】
查看>>
[摘录]第6章 解决棘手问题的谈判艺术
查看>>
第一次偶然出现的“System.Data.Entity.dll”类型的异常
查看>>
用Shell实现俄罗斯方块代码(Tetris.sh)
查看>>