문제

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 주입 공격에 대해 얼마나 안전합니까? 나는 그것에 대한 가장 사소한 공격을 시도했고, 인용문은 제대로 탈출했지만, 누군가가 철저한 테스트를 실시 했습니까, 아니면 저를 보호 할 다른 일이 있습니까?

도움이 되었습니까?

해결책

TVPS의 SQL 주입 공격에 대해 걱정할 필요가 없습니다.

이것은 많은 싱글 톤 전화처럼 보이지만 그렇지 않습니다. Microsoft CSS의 내 동료 Keith Elmore가 지적한 것처럼, 이는 데이터를 쿼리 창에 표시하거나 복사/붙여 넣을 수 있도록 사용되는 컨벤션입니다. TVP는 실제로 그런 식으로 구현되지 않았습니다. 행은 벌크 인서트처럼 스트리밍됩니다. 그러나 간단한 인서트를 수행한다는 인상을 받았을 수도 있습니다.

원천: http://blogs.msdn.com/mikecha/archive/2009/08/07/two-fast-ways-to-bulk-insert-client-generated-data-to-sql-database.aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top