Являются ли табличные параметры SQL Server 2008 уязвимыми для атак с использованием SQL-инъекций?
-
07-07-2019 - |
Вопрос
Я исследовал таблично-значимые параметры в 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; но это могло привести к этому Создается впечатление, что это просто вставки. р>