我一直在研究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注入攻击有多安全?我尝试了对它的最微不足道的攻击,并且引用被正确地转义了,但是是否有人进行了详尽的测试,或者这里是否有其他事情可以保护我?