Tsql 可以像@Pattern+';%';强加SQL注入风险?
SQL注入是否会破坏此存储过程:Tsql 可以像@Pattern+';%';强加SQL注入风险?,tsql,security,Tsql,Security,SQL注入是否会破坏此存储过程: ALTER PROC [dbo].[usp_CanYouCompromiseMe] @Pattern VARCHAR(60) AS BEGIN SELECT * FROM SomeTable WHERE SomeColumn LIKE @Pattern+'%' END 不,SQL注入(执行任意语句)不能破坏该过程 但在某些情况下,它可能会表现得不好。如果您在某个列上有一个索引,并且希望它执行索引查找(可能您为模式设置了一个最小长度
ALTER PROC [dbo].[usp_CanYouCompromiseMe]
@Pattern VARCHAR(60)
AS
BEGIN
SELECT *
FROM SomeTable
WHERE
SomeColumn LIKE @Pattern+'%'
END
不,SQL注入(执行任意语句)不能破坏该过程
但在某些情况下,它可能会表现得不好。如果您在某个列上有一个索引,并且希望它执行索引查找(可能您为模式设置了一个最小长度,以便索引对查找具有足够的选择性),则有人可以在模式的开头放置一个%符号,这样就不能再使用索引查找了。不适用于类似的where子句。SQL注入通常是一个动态SQL问题。注意这个过程以及我如何运行它(EXEC语句故意注释掉): 请注意这一点:
EXEC dbo.usp_CanYouCompromiseMe 'x%'';SHUTDOWN WITH NOWAIT; PRINT''';
…创建此SQL:
SELECT *
FROM (VALUES ('xxx')) x(SomeColumn)
WHERE SomeColumn LIKE 'x%';SHUTDOWN WITH NOWAIT; PRINT'%';
SELECT *
FROM (VALUES ('xxx')) x(SomeColumn)
WHERE SomeColumn LIKE 'x%';SHUTDOWN WITH NOWAIT; PRINT'%';