Regex 正则表达式:匹配不带双引号的sql参数

Regex 正则表达式:匹配不带双引号的sql参数,regex,coldfusion,Regex,Coldfusion,我正在处理一个SQL注入,我需要用cfquerparam标记替换coldfusion querytags中的SQL参数。 为此,我将匹配任何类似以下参数的内容: select * from table where test = #var2#, test ='#var3#' test2 like '%#test#%' test3 like '%#test#' test4 like '#test#%' 但不是 <cfqueryparam value="#test123#"> 这将在c

我正在处理一个SQL注入,我需要用cfquerparam标记替换coldfusion querytags中的SQL参数。 为此,我将匹配任何类似以下参数的内容:

select * from table
where
test = #var2#,
test ='#var3#'
test2 like '%#test#%'
test3 like '%#test#'
test4 like '#test#%'
但不是

<cfqueryparam value="#test123#">
这将在cfqueryparam中找到所有sql参数,但也会找到test123。 我需要做的,并且在我没有成功的地方,是排除被双引号包围的param。 所以,没有测试123,但所有的都很好

我尝试添加[^]?在它前面,但它也开始在比赛前面选择其他角色。同样的情况也发生在后面


有人对此有解决办法吗?

在我看来,你只是不想要这个?在[^]中?
这对我有用:[%'][^]?[^]*['%]?

如果要使用cfqueryparam,这将绑定参数并阻止任何类型的SQL注入

实际上,您可以在标记中使用%作为:

<cfqueryparam cfsqltype="cf_sql_varchar" value="%#test#%" />
是的,谢谢。 我确实需要修改一下,这个对我来说非常合适:

[%']?[^][^]*['%]

关于这个例子:

从表中选择*,“attrivutes.name” 哪里 测试=var2, 测试class='var3' test2类似于“%test%” test3类似于“%test” test4类似于“test%”

顺道来


唯一的一个小问题是,它还占用了var2前面的空间,但目前这不是一个大问题。如果有人知道如何解决这个问题,我很乐意从中学习。

嗯,这一个似乎更完整一些:

[']?[%]?[^][^]*[%]?[']

是否分离['%]?进入[']?[%]?似乎更好,否则它会删除语句中的逗号 插入bla col1、col2中
值“val1”和“val2”

从我阅读的问题中,提问者已经知道他想要使用cfqueryparam,但他正在尝试查找当前缺少的所有位置,并且在搜索过程中需要正则表达式的帮助。正确。我知道如何防止它,但我知道我的正则表达式99%完成了,它只需要一点帮助,让我的正则表达式不匹配%test%,包括双引号。对于当前的正则表达式,我仍然需要检查正则表达式返回值周围的双引号,并将其删除。
<cfqueryparam cfsqltype="cf_sql_varchar" value="%#test#%" />