2011-12-08 70 views
0

我正在處理SQL注入,我需要用cfquerparam標籤替換coldfusion querytags中的sql參數。 對於這個我匹配任何看起來像這樣的PARAMS:正則表達式:匹配沒有雙引號的sql參數

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

但不

<cfqueryparam value="#test123#"> 

當前的正則表達式我已經是:

[%']?#([^#]*)#['%]? 

目前這會發現所有sql params,但也在cfqueryparam中的test123。 我需要做的以及我沒有成功的地方是排除#param#包圍雙引號。 所以,沒有"#test123#",但所有的都很好。

我試着在它前面加入[^"]?,但是它也開始在比賽前選擇其他人物。同樣的情況發生在後面。

有沒有人有解決這個問題?

回答

0

在我看來,你只是不想要? ?在[^「] 這個工作對我來說:[%'][^"]?#([^#]*)#['%]?

1

你想用cfqueryparam,這將綁定的參數,並防止任何類型的SQL注入的

http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7f6f.html

實際上,你可以使用。 %,在標籤內這樣:

<cfqueryparam cfsqltype="cf_sql_varchar" value="%#test#%" /> 
+0

從我閱讀提問者已經知道的問題中看出,他希望使用'cfqueryparam',但他試圖找到當前缺失的所有地方,並且需要在搜索中使用正則表達式的幫助。 – ale

+0

正確。我知道如何防止它,但我的正則表達式已完成99%,它只是需要一點幫助,讓我的正則表達式不匹配「%test%」(包括雙引號)。 對於當前的正則表達式,我仍然需要檢查正則表達式中返回值的雙引號並將其刪除。 – Mattijs

0

是的,謝謝 我也需要改變它一下,這一個完美的作品對我來說:

[%']?[^「]#([^#] *)#['%]?

這個例子

選擇*, '#attrivutes.name#' 從表 其中 測試=#VAR2#, 測試= '#VAR3#' TEST2 LIKE「%#測試#% 「 TEST3 LIKE '%#測試#' TEST4像 '#測試#%'

(砸在http://www.regextester.com/

只有輕微的問題是,它也捕捉空間盈的#VAR2#但那不是現在是一個大問題。如果有人知道如何解決這個問題,我會很樂意從中學習。

0

嗯,這一次似乎是有點更完整: '?[%] [^「]#([^#] *)#[%]?

[] [']

將['%]?分隔爲[']?[%]?('#val1#','#val2#')

相關問題