-
求一个过滤作为SQL语句不合法字符的正则表达式5
求一个正则表达式,要求禁止输入【,】逗号 【_】下划线 【;】
分号 【'】单引号 【--】双减号 【/*】注释开始 【*/】注释结束 【[】左中括号【]】右中括号
(在Extjs JavaScript中使用)
目的:输入文本框的内容作为SQL文的Where中的一部分,为了防止SQL注入攻击。
如果所列举的非法字符有不完善的地方,也请指出,谢谢!
2013年8月28日 11:07
1个答案 按时间排序 按投票排序
-
之前的做法是直接把请求里面的参数全部取出来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语句的相关知识。在IT领域,正则表达式(Regular Expression)是一种强大的文本处理工具,它能快速地匹配、查找、替换或者...
本文将深入探讨SQL修改表语句以及正则表达式在数据处理中的应用。 **SQL修改表语句** SQL修改表语句允许我们动态地更新数据库中的表结构,以便适应业务需求的变化。以下是一些常见的SQL命令: 1. **添加列 (ALTER...
这里,`REGEXP`是正则表达式的SQL谓词,`'^[ABCD].*P$'`是一个正则表达式,其中: - `^` 表示字符串的起始位置; - `[ABCD]` 匹配“A”、“B”、“C”或“D”中的任意一个字符; - `.*` 表示任意数量的任意字符; - ...
引擎通常会包含一个解析方法,该方法接受一个字符串输入,使用正则表达式进行匹配,并返回匹配的结果。同时,可能还需要考虑错误处理和性能优化,以确保解析过程的稳定性和效率。 在压缩包的"htmlFiles"中,可能...
正则表达式,在SQL Server 2005中作为一种强大的文本处理工具,极大地增强了数据库处理复杂文本数据的能力。传统的T-SQL虽然在处理数据方面表现卓越,但在文本分析和操作上显得力不从心,尤其是在执行复杂的文本分析...
模仿SQL语句的正则表达式练习,是我学习正则表达式过程中,对字符串经常sql语句匹配,达到练习正则表达式的目的。语句中包括了,"创建超级用户权限,"*.*"代表数据库里的所有数据,"root"代表超级用户名称,"%"代表...
正则表达式由一个或多个字符型文字或元字符组成。元字符提供算法来确定 Oracle 如何处理组成一个正则表达式的字符。常见的元字符有: * `.` 匹配一个正规表达式中的任意字符(除了换行符) * `^` 使表达式定位至一...
### MySQL正则表达式详解 #### 一、引言 MySQL作为一款广泛使用的数据库管理系统,在进行数据查询时提供了丰富的功能支持。其中,正则表达式是处理文本数据的强大工具之一,能够帮助用户更加灵活地进行数据筛选。...
例如,简单的正则表达式可以是一个具体的字符串(如`'TomSmith'`),也可以是一组复杂规则的组合。 **表1:部分正则表达式的特殊字符及其说明** | 特殊字符 | 描述 | |----------|-------------------------------...
假设我们需要验证一个表格中的电子邮件地址是否合法,可以使用以下SQL语句: ```sql SELECT email FROM users WHERE REGEXP_LIKE(email, '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$'); ``` 这个正则...
这定义了一个正则表达式,用于匹配 SQL 语句的 select 部分。 使用 `regex_match` 函数来匹配输入字符串: ```cpp if (regex_match(in.c_str(), what, expression)) { // 匹配成功 } else { // 匹配失败 } ``` 在...
正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多...
正则表达式(Regular Expression)是一种强大的文本处理工具,可以用来匹配、查找、替换等操作,包括匹配SQL中的注释语句。在本文中,我们将探讨如何使用正则表达式有效地匹配T-SQL(Transact-SQL)中的注释。 首先...
正则表达式是一种强大的文本处理工具,用于匹配、查找、替换或提取字符串中的特定模式。在C#中,`System.Text.RegularExpressions`命名空间提供了`Regex`类来支持正则表达式的操作。通过创建`Regex`对象并调用其方法...
在Oracle数据库中,正则表达式被广泛应用于各种内置函数中,以增强SQL语句的灵活性和功能。 #### 元字符与字符簇 **元字符**是指在正则表达式中具有特殊意义的字符,用于构建复杂的匹配模式。下面是一些常用的元...
接下来,将网页内容解析为字符串后,正则表达式就派上用场了。在C#中,你可以使用`System.Text.RegularExpressions`命名空间的Regex类来进行正则匹配和替换操作。要提取新闻标题、日期或作者等信息,你需要根据百度...
通过组合这些正则表达式,我们可以构建一个完整的解析器来处理各种复杂的SQL语句。此外,还需要考虑到SQL语句可能存在大小写不一致的问题,因此在实际应用中可能还需要对输入的SQL语句进行一定的预处理,比如统一...
例如,正则表达式中的“.”可以匹配任意一个字符,而“*”代表零个或多个前面的字符,“?”代表零个或一个前面的字符,等等。 在实际应用中,正则表达式可以用于数据验证、文本提取、查找和替换操作等。如上文提到...
iBATIS(现在称为MyBatis)是一个优秀的持久层框架,它允许Java开发者将SQL语句与Java代码分离,以实现灵活的数据访问。iBATIS的核心是SQL Maps,它们定义了数据库操作和Java对象之间的映射关系。通过XML配置文件或...