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

SQL Server 2008表值参数是否容易受到SQL注入攻击?

  •  1
  • Mark  · 技术社区  · 17 年前

    我一直在研究SQL Server 2008中的表值参数,发现当将此类参数传递给存储过程时,会向数据库服务器发送如下查询:

    declare @p1 dbo.MyTypeName
    insert into @p1 values(N'row1col1',N'row1col2')
    insert into @p1 values(N'row2col1',N'row2col2')
    insert into @p1 values(N'row3col1',N'row3col2')
    insert into @p1 values(N'row4col1',N'row4col2')
    insert into @p1 values(N'row5col1',N'row5col2')
    
    exec StoredProcedureName @MyParam=@p1
    

    我的问题是,考虑到insert语句不是参数化的,这对SQL注入攻击有多安全?我尝试了对它的最微不足道的攻击,并且引用被正确地转义了,但是是否有人进行了详尽的测试,或者这里是否有其他事情可以保护我?

    1 回复  |  直到 17 年前
        1
  •  1
  •   user114600    17 年前

    您不必担心TVP的SQL注入攻击。

    这好像是一堆单身汉 打电话,但不是。作为我的同事 Keith Elmore在微软的CSS中指出 出去,这只是惯例 允许显示数据或 复制/粘贴到查询窗口中,然后 跑。TVP实际上不是 以这种方式实施,行是 像一个大块头一样横穿 插入“但是它可能导致了 感觉很简单 插入物。

    来源: http://blogs.msdn.com/mikecha/archive/2009/08/07/two-fast-ways-to-bulk-insert-client-generated-data-to-sql-database.aspx

    推荐文章