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
- Поиск ключевого слова с LIKE% %
- Случай SQL-Ignore при поиске строки
- Использование оператора LIKE с параметрами хранимой процедуры
- LIKE с значениями, разделенными запятыми
- Ключевое слово «LIKE» не работает в SQL Server 2008
- Предложение «LIKE» с оператором «AND» в SQL Server 2012
- Предложение LIKE не работает на SQL-сервере
- SQL Server - LIKE Operator работает при поиске частичной строки, но не цельной строки
- Как использовать подобный оператор для поиска паттернов, где часть операнда является параметром
- Точное соответствие SQL для слов в столбце
- Использование SQL LIKE-оператора с %%
- Создать SQL 'LIKE' Statment, который ищет конкретные шаблоны чисел и букв
- Регулярное выражение Sql Server LIKE - разъяснение поведения?
Да, проверьте:
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
.