SQL Server Dynamic SQL с предложением LIKE и SQL Injection

У меня динамически построенный SQL, как показано ниже. Мой вопрос: уязвим ли он для SQL Injection? Если да, как мне его исправить?

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

Да, проверьте:

 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 ''%'[email protected]+'%'' ) ' PRINT @strSQL EXEC sp_executesql @strSQL DROP TABLE IDownload 

Я могу удалить таблицу Test проходящую специальную строку в @Search . Перепишите свой код с помощью процедуры и параметров sp_executesql .

  • Несколько операторов LIKE в TSQL
  • Как я могу оптимизировать / реорганизовывать предложение TSQL «LIKE»?
  • Поиск конкретного символа и / или строки SQL Server 2008
  • sql-сервер извлекает "подобную подстроку"
  • Как найти «%» с оператором LIKE в SQL Server?
  • SQL Server datetime LIKE выберите?
  • Есть ли альтернатива запросу LIKE в T-SQL?
  • Использование оператора LIKE с параметрами хранимой процедуры
  • Запрос, чтобы найти столбцы, которые заканчиваются символом процента%
  • Символ крышки (^) в позиции LIKE не работает должным образом
  • Поиск ключевого слова с LIKE% %
  • Давайте будем гением компьютера.