【问题标题】:Simple regex question (C#, SQL Server)简单的正则表达式问题(C#、SQL Server)
【发布时间】:2010-03-08 21:16:12
【问题描述】:

我有一些正则表达式,看起来像这样:

string regexForDrop = @"^((%27)|'|(\-\-))\s*(d|%64|%44)(r|%72|%52)(o|%6F|%4F)(p|%70|%50)$";

当我写到输入“--drop”时它工作正常,但当我写“drop table users”或类似的东西时它不起作用。我需要它能够正常工作,无论“--drop”之后发生什么。我该如何实现呢?

谢谢

【问题讨论】:

  • 你是不是想在这里阻止 SQL 注入攻击?
  • 我强烈建议不要使用正则表达式作为 SQL 注入的安全方法。这是被黑客入侵的秘诀
  • 即使它适用于“--drop”,“--truncate”或任何其他人可以做的坏事又如何呢?
  • -1 是有史以来最愚蠢的想法之一。
  • 是的,我知道SP,我只是对正则表达式的研究做了一些研究。

标签: c# sql-server regex winforms sql-injection


【解决方案1】:

您似乎试图阻止 sql 注入攻击。对于这种使用参数化查询的方式,您不需要检查注入。

好读:
http://weblogs.asp.net/scottgu/archive/2006/09/30/Tip_2F00_Trick_3A00_-Guard-Against-SQL-Injection-Attacks.aspx

【讨论】:

  • 是的,我知道 SP,我只是对正则表达式的研究做一些研究。谢谢你的链接,我会读的。
【解决方案2】:
string regexForDrop = @"^((%27)|'|(\-\-))\s*(d|%64|%44)(r|%72|%52)(o|%6F|%4F)(p|%70|%50).*$";

?或没有$

【讨论】:

  • +1,不管@Vytas999是什么原因,你写了代码来解决它
【解决方案3】:

删除正则表达式末尾的“$”。 $ 匹配输入字符串的结尾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    相关资源
    最近更新 更多