Являются ли параметры таблицы SQL Server 2008 уязвимыми для атак с использованием SQL-инъекций? - PullRequest
1 голос
/ 14 сентября 2009

Я исследовал табличные параметры в SQL Server 2008 и обнаружил, что при передаче такого параметра в хранимую процедуру на сервер базы данных отправляется запрос, подобный следующему:

declare @p1 dbo.MyTypeName
insert into @p1 values(N'row1col1',N'row1col2')
insert into @p1 values(N'row2col1',N'row2col2')
insert into @p1 values(N'row3col1',N'row3col2')
insert into @p1 values(N'row4col1',N'row4col2')
insert into @p1 values(N'row5col1',N'row5col2')

exec StoredProcedureName @MyParam=@p1

У меня вопрос: насколько это защищено от атак SQL-инъекций, учитывая, что операторы вставки не параметризованы? Я попробовал самую тривиальную атаку против него, и кавычки были должным образом сброшены, но кто-нибудь провел исчерпывающий тест, или здесь происходит что-то еще, что защитит меня?

1 Ответ

1 голос
/ 14 сентября 2009

Вам не нужно беспокоиться об атаках SQL-инъекций с TVP.

Это похоже на синглтон звонки, но это не так. Как мой коллега Кит Элмор из Microsoft CSS указал вне, это просто соглашение, используемое чтобы данные отображались или скопировать / вставить в окно запроса и запустить. TVP на самом деле не таким образом - строки потоком, как большая часть вставить - но это могло привести к этому Создается впечатление, что это просто Вставки.

Источник: http://blogs.msdn.com/mikecha/archive/2009/08/07/two-fast-ways-to-bulk-insert-client-generated-data-to-sql-database.aspx

...