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语句的相关知识。在IT领域,正则表达式(Regular Expression)是一种强大的文本处理工具,它能快速地匹配、查找、替换或者...

    SQL修改表语句和正则表达式

    本文将深入探讨SQL修改表语句以及正则表达式在数据处理中的应用。 **SQL修改表语句** SQL修改表语句允许我们动态地更新数据库中的表结构,以便适应业务需求的变化。以下是一些常见的SQL命令: 1. **添加列 (ALTER...

    正则表达式在数据库查询中的应用

    这里,`REGEXP`是正则表达式的SQL谓词,`'^[ABCD].*P$'`是一个正则表达式,其中: - `^` 表示字符串的起始位置; - `[ABCD]` 匹配“A”、“B”、“C”或“D”中的任意一个字符; - `.*` 表示任意数量的任意字符; - ...

    SQL 语法分析,正则表达式解析C#文件;正则表达式实现的语法分析引擎

    引擎通常会包含一个解析方法,该方法接受一个字符串输入,使用正则表达式进行匹配,并返回匹配的结果。同时,可能还需要考虑错误处理和性能优化,以确保解析过程的稳定性和效率。 在压缩包的"htmlFiles"中,可能...

    sql_server 正则表达式

    正则表达式,在SQL Server 2005中作为一种强大的文本处理工具,极大地增强了数据库处理复杂文本数据的能力。传统的T-SQL虽然在处理数据方面表现卓越,但在文本分析和操作上显得力不从心,尤其是在执行复杂的文本分析...

    模仿SQL语句的正则表达式

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

    Oracle数据库正则表达式

    正则表达式由一个或多个字符型文字或元字符组成。元字符提供算法来确定 Oracle 如何处理组成一个正则表达式的字符。常见的元字符有: * `.` 匹配一个正规表达式中的任意字符(除了换行符) * `^` 使表达式定位至一...

    MySQL正则表达式

    ### MySQL正则表达式详解 #### 一、引言 MySQL作为一款广泛使用的数据库管理系统,在进行数据查询时提供了丰富的功能支持。其中,正则表达式是处理文本数据的强大工具之一,能够帮助用户更加灵活地进行数据筛选。...

    正则表达式在oracle中的应用

    例如,简单的正则表达式可以是一个具体的字符串(如`'TomSmith'`),也可以是一组复杂规则的组合。 **表1:部分正则表达式的特殊字符及其说明** | 特殊字符 | 描述 | |----------|-------------------------------...

    Oracle 10g 针对正则表达式的支持分析

    假设我们需要验证一个表格中的电子邮件地址是否合法,可以使用以下SQL语句: ```sql SELECT email FROM users WHERE REGEXP_LIKE(email, '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$'); ``` 这个正则...

    C++ BOOST 正则表达式使用教程

    这定义了一个正则表达式,用于匹配 SQL 语句的 select 部分。 使用 `regex_match` 函数来匹配输入字符串: ```cpp if (regex_match(in.c_str(), what, expression)) { // 匹配成功 } else { // 匹配失败 } ``` 在...

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

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

    使用正则表达式匹配tsql注释语句

    正则表达式(Regular Expression)是一种强大的文本处理工具,可以用来匹配、查找、替换等操作,包括匹配SQL中的注释语句。在本文中,我们将探讨如何使用正则表达式有效地匹配T-SQL(Transact-SQL)中的注释。 首先...

    C#正则表达式提取网页数据

    正则表达式是一种强大的文本处理工具,用于匹配、查找、替换或提取字符串中的特定模式。在C#中,`System.Text.RegularExpressions`命名空间提供了`Regex`类来支持正则表达式的操作。通过创建`Regex`对象并调用其方法...

    正则表达式

    在Oracle数据库中,正则表达式被广泛应用于各种内置函数中,以增强SQL语句的灵活性和功能。 #### 元字符与字符簇 **元字符**是指在正则表达式中具有特殊意义的字符,用于构建复杂的匹配模式。下面是一些常用的元...

    用C#正则表达式实现的百度体育新闻的抓取

    接下来,将网页内容解析为字符串后,正则表达式就派上用场了。在C#中,你可以使用`System.Text.RegularExpressions`命名空间的Regex类来进行正则匹配和替换操作。要提取新闻标题、日期或作者等信息,你需要根据百度...

    利用正则表达式对SQL解释的方法

    通过组合这些正则表达式,我们可以构建一个完整的解析器来处理各种复杂的SQL语句。此外,还需要考虑到SQL语句可能存在大小写不一致的问题,因此在实际应用中可能还需要对输入的SQL语句进行一定的预处理,比如统一...

    基于正则表达式的数据处理应用.pdf

    例如,正则表达式中的“.”可以匹配任意一个字符,而“*”代表零个或多个前面的字符,“?”代表零个或一个前面的字符,等等。 在实际应用中,正则表达式可以用于数据验证、文本提取、查找和替换操作等。如上文提到...

    ibatis例子加教程&java&javascript&dhtml&正则表达式工具

    iBATIS(现在称为MyBatis)是一个优秀的持久层框架,它允许Java开发者将SQL语句与Java代码分离,以实现灵活的数据访问。iBATIS的核心是SQL Maps,它们定义了数据库操作和Java对象之间的映射关系。通过XML配置文件或...

Global site tag (gtag.js) - Google Analytics