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

.NET参数化查询注入

  •  4
  • Scott  · 技术社区  · 16 年前

    .NET中的参数化查询对SQL注入安全吗?也就是说,当您使用参数时,.NET是否会自动转义危险字符?

    3 回复  |  直到 16 年前
        1
  •  12
  •   Jon Skeet    16 年前

    当您使用参数时,它们通常不会首先作为文本发送。他们可以对数据库使用本机wire协议。如果参数本身是一个文本参数,那么它通常会被适当地封装在协议中,以便数据库知道它是一个参数而不是SQL。

    我猜是个提供者 能够 只需将参数转换为完整的SQL语句,这将是一种糟糕的处理方式。

        2
  •  2
  •   SLaks    16 年前

    当您使用参数时,.Net的SQL客户机将在原始TDS流中将参数值发送到SQL server。


    如果SQL调用 EXECUTE 对于包含串联参数的字符串,您仍然容易受到攻击。

        3
  •  0
  •   SqlRyan    16 年前

    至于字符串值,yes-.NET将为您转义它们,您可以通过尝试在表中查找值(如“-comment”)来看到这一点,该表将中断连接语句,但在参数化查询中工作正常。

    不过,正如Jon所说,数字和日期等信息将以其本地格式发送,这样更安全/更快。