0 0

求一个过滤作为SQL语句不合法字符的正则表达式5

求一个正则表达式,要求禁止输入【,】逗号 【_】下划线 【;】
分号 【'】单引号 【--】双减号 【/*】注释开始 【*/】注释结束 【[】左中括号【]】右中括号

(在Extjs JavaScript中使用)

目的:输入文本框的内容作为SQL文的Where中的一部分,为了防止SQL注入攻击。

如果所列举的非法字符有不完善的地方,也请指出,谢谢!


1个答案 按时间排序 按投票排序

0 0

之前的做法是直接把请求里面的参数全部取出来Filter,不能只过滤GET,Post一样重要,缺点就是容易误伤。

import java.util.regex.Pattern;

public class Test {

	private static final String GETFILTER= "'|(and|or)\\b.+?(>|<|=|in|like)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";
	private static final String POSTFILTER = "\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";
	private static final String COOKIEFILTER = "\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";
	
	public static void main(String[] args) {
		String url = "http://javaweb.org/show.jsp?id=1'";
		System.out.println(Pattern.compile(GETFILTER).matcher(url).find());
	}
}

2013年8月28日 17:32

相关推荐

    模仿SQL语句的正则表达式

    模仿SQL语句的正则表达式练习,是我学习正则表达式过程中,对字符串经常sql语句匹配,达到练习正则表达式的目的。语句中包括了,"创建超级用户权限,"*.*"代表数据库里的所有数据,"root"代表超级用户名称,"%"代表...

    运用正则表达式匹配所有表名

    正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多...

    收集的正则表达式(很经典)

    匹配中文字符的正则表达式: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff] 匹配空行的正则表达式:\n[\s| ]*\r 匹配HTML标记的正则表达式:/&lt;(.*)&gt;.*|&lt;(.*) \/&gt;/ 匹配首尾空格的正则表达式:...

    JS、replace利用正则表达式替换SQL所有参数为指定格式的数据

    SQL参数格式 例如:select * from tb where nd=:nd and yd=:yd 想一次性把所有SQL语句中参数(带冒号)全部换成数据, 开始 选定用正则表达式。 原先写这样 代码如下: strsql.replace(/(:\w+)/g,(“$1”).substring(1)...

    Java正则表达式-详解(附相关真题)

    目录正则表达式1. 正则标记1.1 字符1.2 字符类1.3 预定义字符类1.4 边界匹配器(java一般不用到)1.5 Greedy 数量词1.6 Logical ...概述:描述了一种字符串匹配的模式,用来检查一个串是否含有某个子串、将匹配的子串替

    sql server 提取汉字/数字/字母的方法 demo

    sql server 提取汉字/数字/字母的方法 里面是Sql语句,以及测试代码等,一看就会,而且是现成的代码

    MySQL中使用replace、regexp进行正则表达式替换的用法分析

    本文实例讲述了MySQL中使用replace、regexp进行正则表达式替换的用法。分享给大家供大家参考,具体如下: 今天一个朋友问我,如果将数据库中查到的类似于“./uploads/110100_cityHotel_北京富豪华宾馆.jpg”这样的...

    MySQL中REGEXP正则表达式使用大全

    以前我要查找数据都是使用like后来发现mysql中也有正则表达式了并且感觉性能要好于like,下面我来给大家分享一下mysql REGEXP正则表达式使用详解,希望此方法对大家有帮助。 MySQL采用Henry Spencer的正则表达式实施...

    基于正则表达式的数据处理应用 (2010年)

    正则表达式是一种非常重要和有效的字符串匹配模式,将其应用于SQL语句中厂具有强大的数据处理功能。通过一个学员信息管理系统中使用的基于正则表达式的数据处理应用表明,该表达式不仅可以实现复杂的操作,而且降低了...

    replace MYSQL字符替换函数sql语句分享(正则判断)

    代码如下:Update dede_addonsoft SET dxylink=REPLACE(dxylink, ‘.zip’, ‘.rar... :正则匹配,把field字段里的 .rar 替换为 .7z MySQL正则表达式替换,字符替换方法 两句SQL,都是字符替换,比较好用。 update com

    mysql update正则替换sql语句

    主要介绍了mysql update正则替换sql语句的相关资料,需要的朋友可以参考下

    仿制简单的SQL select查询语句,用于对二维数组的查询,建立环境-Excel Vba,可移植到VB环境中

    '参照SQL语句:Select * From array [Where conditions] [Distinct fields] [ResultWithTitle] ' '实现功能: ' 依条件设置查询数组,返回包含查询字段(或全部字段)的数组,可多条件组合。 ' 条件运算符包括:&gt; = ...

    如何用oracle 截取两个相同字符串之间的字符

    在实际工作中经常遇到截取两个相同字符串之间的字符的oracle问题,以下是相关语句

    用sql获取某字符串中的数字部分的语句

    代码如下: create function dbo.F_Get_No ( @No varchar(100) ) RETURNS bigint AS BEGIN WHILE PATINDEX(‘%[^0-9]%’,@No)&gt;0 BEGIN SET @No=STUFF(@No,PATINDEX(‘%[^0-9]%’,@No),1,”) –删掉一个非数字的字符,...

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    因为一个汉字是两个字符,而一个“_”符号只能代表一个字符。 (4)空值查询 IS NULL关键字可以用来判断字段的值是否为空值(NULL)。如果字段的值是空值,则满足查询条件,该记录将被查询出来。如果字段的值不是...

    Mysql语法、特殊符号及正则表达式的使用详解

    Mysql常用显示命令 1、显示当前数据库服务器中的数据库列表: mysql&gt; SHOW DATABASES; 注意:mysql库里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。 2、进入数据库: ...

    Oracle PL/SQL程序设计(第5版)(下册)第二部分

    编辑推荐 ...附录A 正则表达式的元字符和函数参数 1093 A.1 元字符 1093 A.2 函数和参数 1096 A.2.1 正则表达式函数 1096 A.2.2 正则表达式参数 1097 附录B 数字格式模型 1099 附录C 日期格式模型 1102

    Oracle PL/SQL程序设计(第5版)(下册) 第一部分

    近15年来,成千上万的PL/...附录A 正则表达式的元字符和函数参数 1093 A.1 元字符 1093 A.2 函数和参数 1096 A.2.1 正则表达式函数 1096 A.2.2 正则表达式参数 1097 附录B 数字格式模型 1099 附录C 日期格式模型 1102

    Oracle高级sql学习与练习

    13、ORACLE 10G正则表达式 14、使用HINT 15、PARITION分区 16、并行操作 17、扩展DDL和DML语句 18、MODEL语句 19、10G闪回查询 20、专题-行列转换 21、专题-连续值和累计值问题 22、专题-NULL和DUAL详解 23、专题-...

    最小巧的数据库管理工具,联系Linq语句的最佳工具,小巧方便,功能强大!

    LINQPad提供了多种执行...这也意味着对于要进行简单测试的任何简短代码,LINQPad非常有用,例如:棘手的数字格式字符串或者匹配正则表达式。该软件为最新破解注册版,带有完整的智能提示功能,免费版是没有智能提示的。

Global site tag (gtag.js) - Google Analytics