我一直在研究 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
我的问题是,鉴于插入语句没有参数化,这对 SQL 注入攻击有多安全?我尝试了最微不足道的攻击,并且引号被正确地转义了,但是有没有人进行了详尽的测试,或者这里还有其他事情可以保护我吗?