Каковы проблемы безопасности этого SP - PullRequest
1 голос
/ 05 февраля 2012

У меня есть запрос, который возвращает значение поля, отправленного через параметр:

@Field nvarchar(50),
@ID int
...

execute('SELECT ' + @Field + ' from SampleTable where (ID=' + @ID + ');');

Я делаю это, чтобы иметь один SP вместо нескольких SP с одинаковой структурой. Теперь я не уверен, безопасно это или нет?

Ответы [ 2 ]

2 голосов
/ 05 февраля 2012

Для безопасности используйте sp_executesql и quotename .

declare @SQL nvarchar(max)
set @SQL = 'select '+quotename(@Field)+' from SampleTable where ID = @ID'
exec sp_executesql @SQL, N'@ID int', @ID
2 голосов
/ 05 февраля 2012

Запрос не является безопасным.

Клиент, использующий веб-систему, может удалить всю базу данных с помощью атаки с использованием SQL-инъекций мимоходом '; DROP DATABASE dbname - вместо id. Если вы планируете использовать вышеупомянутый запрос, используйте параметризованную хранимую процедуру SQL для предотвращения атак с использованием SQL-инъекций.

Подробнее ниже: -

Как защитить от атак SQL-инъекций в ASP .NET

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...