用于安全SQL插入的正则表达式

时间:2012-07-10 18:33:51

标签: sql-server regex vbscript

我有一个将一些字符串插入数据库的vbscript。通常,这些字符串有奇怪的字符,引号,撇号,&符号等。我目前使用以下字符串来替换除了某些字符之外的所有字符,但它正在替换我想要保留的分号和其他一些东西(包括空格)。所以我基本上都在寻找仍然会生成sql安全字符串的限制性最小的正则表达式。

对于它的价值,这些字符串是Windows安装的应用程序(正如您在“添加/删除程序”中看到的那样)。

Function CleanUp (input)
  Dim objRegExp, outputStr
  Set objRegExp = New Regexp

  objRegExp.IgnoreCase = True
  objRegExp.Global = True
  objRegExp.Pattern = "((?![a-zA-Z0-9]).)+"
  outputStr = objRegExp.Replace(input, "-")

  objRegExp.Pattern = "\-+"
  outputStr = objRegExp.Replace(outputStr, "-")

  CleanUp = outputStr
End Function

2 个答案:

答案 0 :(得分:2)

为什么字符串必须是SQL安全的?使用参数并完成它。 Hack-Proofing Your Applications

答案 1 :(得分:2)

到目前为止,我的测试看起来效果很好:

  

objRegExp.Pattern =“[^ \ x20- \ x26,^ \ x28- \ x7E]”'空格通过&,跳过',然后(通过〜

我不知道你可以指定一系列ascii值。这涵盖了Space和〜之间的所有内容,不包括单引号(')。