2012-05-23 131 views
0

我有一個tcl變量$值正在通過隱藏的輸入字段傳遞。 什麼是一個很好的正則表達式來檢查SQL注入。tcl變量SQL注入檢查

我希望它只允許在大小寫的情況下。

我希望它只允許在另一種情況下的字符。

而在另一種情況下的數字和字符。

在所有3種情況下,我不希望被列入

+2

一般而言,建議您使用參數化的SQL語句,而不是將字符串替換爲SQL代碼;讓尷尬的案例變得更加容易。 –

+0

嗨Donal ..你可以給我一個使用TCL/Informix的參數化SQL語句的例子嗎? – Micheal

回答

3
switch $case { 
    case1 {set regex {^[[:digit:]]+$}} 
    case2 {set regex {^[[:alpha:]]+$}} 
    case3 {set regex {^[[:alnum:][:space:]]+$}} 
    default {error "what case is this?"} 
} 
if {! [regexp $regex $value]} { 
    error "invalid value: value" 
} 

任何特殊chracters要刪除不匹配的字符

switch $case { 
    case1 {set regex {\D}} 
    case2 {set regex {[^[:alpha:]]}} 
    case3 {set regex {[^[:alnum:][:space:]]}} 
} 
set safe_value [regsub -all $regex $value ""] 

見Tcl的手冊頁regexpregsubre_syntax

+0

@ glenn ..除了驗證和打印rror,如果我想剝離特殊的charcaters並插入呢?我怎麼會去 – Micheal

+0

我還需要在上面的情況3允許空間。那可能嗎? – Micheal

+0

@ user856753,請參閱編輯 –