代码之家  ›  专栏  ›  技术社区  ›  Rachel

分析一个SQL语句,看看它是否是除select语句之外的其他语句?

  •  1
  • Rachel  · 技术社区  · 14 年前

    有没有一种好的方法来分析一个SQL语句,以确保它只包含一个select语句而不包含其他语句?我使用的是C、System.Data.sqlConnection和MS SQL Server

    5 回复  |  直到 7 年前
        1
  •  6
  •   SLaks    14 年前

    您应该作为无权执行除 SELECT .

    这边,有没有- 选择 语句将无法执行。

    这是最安全的解决方案,不需要复制SQL Server的解析器。

        2
  •  1
  •   Alex    14 年前

    我想你可以想出一个正则表达式,但它可能不是100%安全的。

    最好的方法是:
    1。编写存储过程和视图,并限制用户仅使用它们的权限。(和某些表上的select语句)
    2。建立一个数据抽象层。您构建查询,而不是其他人。让其他人只访问您公开的一些方法。
    三。使用linq to sql,但隐藏dataContext对象,因此无法对数据库进行任何更改。

        3
  •  0
  •   Community M-A    7 年前

    我认为解析SQL将是解决方案: from another question

        4
  •  -1
  •   GendoIkari    14 年前

    由于select语句需要位于语句的最开始,因此您只需检查字符串,查看前6个字符是否为select:

    if (stringSql.Substring(0, 6).ToUpper() == "SELECT")
    {
        //execute statement
    }
    
        5
  •  -1
  •   Gabriel Magana    14 年前

    检查以确保该语句以select关键字开头,然后确保该语句不包含不属于文本字符串的分号(它将开始另一个SQL语句)。

    推荐文章