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 ""]

请参阅 Tcl 手册页以了解regexpregsubre_syntax

于 2012-05-23T20:36:08.853 回答