SQL server Dynamic SQL mit LIKE-Klausel und SQL Injection

Ich habe eine dynamisch aufgebaute SQL wie unten. Meine Frage ist, ist es anfällig für SQL Injection? Wenn ja, wie soll ich das beheben?

--search title only if @SearchType =2 BEGIN SET @strSQL = @strSQL + 'AND (IDownload.FileTitle LIKE ''%'+@Search+'%'' ) ' END 

Ja, überprüfen Sie:

 CREATE TABLE Test (Id int) GO CREATE TABLE IDownload (FileTitle nvarchar(100)) DECLARE @strSQL nvarchar(max) DECLARE @Search nvarchar(max) = 'a'') DROP TABLE Test --' SET @strSQL = 'SELECT 1 FROM IDownload WHERE 1 = 1 ' SET @strSQL = @strSQL + 'AND (IDownload.FileTitle LIKE ''%'+@Search+'%'' ) ' PRINT @strSQL EXEC sp_executesql @strSQL DROP TABLE IDownload 

Ich kann @Search Test passing spezielle characterfolge in @Search . sp_executesql Ihren Code mit der Prozedur sp_executesql und den Parametern um.