0

非表示の入力フィールドを介して渡される tcl 変数 $value があります。SQL インジェクションをチェックするための適切な正規表現は何でしょうか。

念のため、数字のみを許可したいと思います。

別のケースでは文字のみを許可したいと思います。

また、別のケースでは数字と文字の両方。

3つのケースすべてで、特別なキャラクターを含めたくありません

4

1 に答える 1

4
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"
}

一致しない文字を削除するには

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

regexpregsub、およびre_syntaxについては、 Tcl のマニュアル ページを参照してください。

于 2012-05-23T20:36:08.853 に答える