Frage

Ich habe in SQL Server 2008 die Parameter durch die Tabelle untersucht, und ich habe festgestellt, dass bei der Übergabe eines solchen Parameters an eine gespeicherte Prozedur eine Abfrage wie die folgenden an den Datenbankserver gesendet wird:

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

Meine Frage ist, wie sicher gegen SQL -Injektionsangriffe ist dies, da die Einfügungsanweisungen nicht parametrisiert sind? Ich habe den trivialsten Angriff dagegen ausprobiert, und die Zitate wurden richtig entkommen, aber hat jemand einen erschöpfenden Test durchgeführt, oder gibt es hier noch etwas, das mich beschützen würde?

War es hilfreich?

Lösung

Sie müssen sich keine Sorgen um SQL -Injektionsangriffe mit TVPs machen.

Dies scheint ein Haufen Singleton -Anrufe zu sein, aber es ist nicht so. Wie meine Kollegin Keith Elmore von Microsoft CSS betonte, ist dies nur die Konvention, mit der die Daten angezeigt oder kopiert/eingefügt werden können. Der TVP wird nicht auf diese Weise implementiert - die Zeilen werden wie ein Masseneinsatz über die Streams gestreamt -, aber es hat zu diesem Eindruck geführt, dass es einfache Einsätze macht.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top