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

StackOverflow https://stackoverflow.com/questions/1422891

Вопрос

Я исследовал таблично-значимые параметры в 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-инъекций, учитывая, что операторы вставки не параметризованы? Я попробовал самую тривиальную атаку против него, и кавычки были правильно уклонены, но кто-нибудь проводил исчерпывающий тест, или здесь происходит что-то еще, что защитит меня?

Это было полезно?

Решение

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

  

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top