网上其他同学的都说是重用执行计划,将用户输入的作为文本查询,到底如何实现,我用下面三行代码来解析一下。
DECLARE @test NVARCHAR()
SET @test=' or 1='1
SELECT * FROM Test WHERE test = @test
无论是调用存储过程还是用SqlParameter方式,都会牵涉到赋值给变量的问题,如果给test变量赋值' or 1='1、'' or 1=1和' 1 or 1=1'的,运行的时候,会出现语法不正确,如果赋值' or 1=1',则表明搜寻test=' or 1=1',从而达到过滤的目的。