stackoverflow очень помог мне в карьере кодирования, всегда имея правильные ответы на мои вопросы. Однако этот вопрос может быть немного конкретным, и, надеюсь, он не получит суровых ответов, поскольку это мое первое сообщение на сайте.SQL Injection на SQL Server 2012
Я заинтересован в создании хранимой процедуры SQL Server 2012, которая позволяет пользователям искать различные столбцы. Я считаю, что я создал хранимый процесс, который делает то, что я ожидаю, но я обеспокоен попытками SQL Injection. Я рассмотрел все мои доступные базы с SQL Injection? Если нет, пожалуйста, просветите меня о способах обхода моего образца, хранящегося в процессе. Обратите внимание: тот, который был отмечен, был изменен для защиты структуры данных компании.
хранимых процедур:
CREATE PROCEDURE [dbo].[spSearch]
(
@searchTerm varchar(50) = NULL
)
AS
set @searchTerm = LTRIM(RTRIM(@searchTerm));
select a.ID
,a.Col1
,a.Col2
,a.Col3
,a.Col4
,a.Col5
,b.Col1
from table1 a
left join table2 b on a.ID = b.ID
where (a.Col1 like '%' + @searchTerm + '%'
or a.Col2 like '%' + @searchTerm + '%'
or a.Col3 like '%' + @searchTerm + '%'
or a.Col4 like '%' + @searchTerm + '%'
or b.Col1 like '%' + @searchTerm + '%'
or b.Col2 like '%' + @searchTerm + '%'
or b.Col3 like '%' + @searchTerm + '%'
or b.Col4 like '%' + @searchTerm + '%'
or b.Col5 like '%' + @searchTerm + '%'
or b.Col6 like '%' + @searchTerm + '%')
GO
Моя главная проблема заключается в вешать прохождения враждебную SQL команды в параметр VARCHAR 50 символов и с его выполнять в любом из различных, где, как оговорок.
Вы использовали атаку SQL-инъекций с помощью параметра. Враждебные команды будут рассматриваться как обычный «текст поиска», как если бы вы искали строку враждебной команды. –
Это не проблема на этом уровне. Он уже параметризован, поэтому он будет вести себя так, как если бы это был поиск значения параметра. – Siyual
Кстати, вы все равно можете ввести отверстие для инъекций SQL в точке, где вы получаете этот параметр и отправляете на SQL-сервер. –