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

时间:2009-09-14 17:24:08

标签: sql-server-2008 sql-injection table-valued-parameters

我一直在研究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 个答案:

答案 0 :(得分:1)

您无需担心使用TVP进行SQL注入攻击。

  

这好像是一堆单身人士   打电话,但事实并非如此。作为我的同事   微软CSS的Keith Elmore指出   out,这只是使用的惯例   允许显示数据或   复制/粘贴到查询窗口和   跑。 TVP实际上并不是   以这种方式实现 - 行是   像散装一样流过   插入 - 但它可能导致了这一点   它的确很简单   插入

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