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 (проблемы с производительностью)
- Как использовать wild card в середине SQL-сервера, например запроса
- Запрос возвращает разные результаты
- Случай SQL-Ignore при поиске строки
- Microsoft SQL Server не возвращает все при использовании предложения LIKE
- LIKE игнорирует магический символ Unicode
- SQL Server datetime LIKE выберите?
- Почему существует аргумент ESCAPE оператора LIKE?
- Использование оператора LIKE с параметрами хранимой процедуры
- Динамическое подобное заявление в SQL
- Группировать с помощью LIKE Operator и игнорировать значение NULL
- Поиск конкретного символа и / или строки SQL Server 2008
- SQL-запрос для проверки `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
.