我用的是这个正则表达式:
[']?[%]?[^"]#([^#]*)#[%]?[']?关于这一案文:
insert into table (id,name,age) values ('#var1#' ,#var2#,'#var3#', 3, 'name') where id = '#id#' like ""
and test=<cfqueryparam value="#id#">出于某种原因,它正在捕获#var2#和'#var3#'之间的逗号,但是当我包含一个[^,]时,它开始执行一些奇怪的操作。有人能帮我处理这件事吗。
当我现在阅读我的regex时,它应该能找到以下内容:
percentage
那么,为什么,当我在前面加上“没有逗号”时,正则表达式会中断吗??
最新问题:
好的,我试着解释一下:查询可以如下所示:
SELECT e.*, m.man_id, m.man_title, c.cat_id, c.cat_name
FROM ec_products e, ec_categories c, ec_manufacturers m
WHERE c.cat_id = e.prod_category AND
e.prod_manufacturer = m.man_id AND
e.prod_title LIKE <cfqueryparam value="%#attributes.keyword#%"> and
test='#var1#'
ORDER BY e.prod_title 现在,我想要##之间的每个值,而不是被queryparam标记包围的值。因此,在这个示例中,我确实需要#var1#,但不需要#attributes.keyword#。原因是查询中没有标签包围的所有参数都是不安全的,可能导致SQL注入。我现在的判断力是
(?!")'?%?#(?!\d)[\w.\(\)]+#%?'?(?!")就快到了。它确实找到了attributes.keyword,因为%。我只想要任何有##但不被双引号包围的东西,所以不想要"##"。这将给出sql中所有不安全的参数,如'#var#'、#aNumber#、'%##'、'%##%'或'##%,但不像
<cfqueryparam value="#variable#">。我希望你能理解我的意图?
发布于 2011-12-12 01:39:25
将捕获组从初始正则表达式中保存下来,下面是一个修改后的表达式。
'?%?(?!")#([^#]+)#%?'?发布于 2011-12-12 01:34:18
根据您提供的信息,这应该是正确的。
'?%?(?!")#[^#]+#%?'?https://stackoverflow.com/questions/8468971
复制相似问题