【问题标题】:Regex for safe SQL insert用于安全 SQL 插入的正则表达式
【发布时间】:2012-07-10 18:33:51
【问题描述】:

我有一个将一些字符串插入数据库的 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

【问题讨论】:

    标签: sql-server regex vbscript


    【解决方案1】:

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

    【讨论】:

    • 这是为了修复一个包含超过 2,500 行代码的遗留 VB 脚本。不过谢谢你的关心...
    【解决方案2】:

    到目前为止,这在我的测试中似乎效果很好:

    objRegExp.Pattern = "[^\x20-\x26,^\x28-\x7E]" '空格到 &,跳过 ',然后 ( 到 ~

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

    【讨论】:

    • 周五投产,本周末成功导入/更新4500台设备。我检查的那些看起来都很棒。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    相关资源
    最近更新 更多