Domanda

Ho studiato i parametri a valori di tabella in SQL Server 2008 e ho scoperto che quando si passa un tale parametro a una procedura memorizzata, una query come la seguente viene inviata al server di database:

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

La mia domanda è: quanto sono sicuri gli attacchi SQL injection, dato che le istruzioni insert non sono parametrizzate? Ho provato l'attacco più banale contro di esso e le virgolette sono state correttamente sfuggite, ma qualcuno ha eseguito un test esaustivo o c'è qualcos'altro che mi protegge?

È stato utile?

Soluzione

Non devi preoccuparti degli attacchi SQL Injection con i TVP.

  

Sembra un mucchio di singleton   chiama ma non lo è. Come il mio colleage   Keith Elmore di Microsoft CSS ha sottolineato   fuori, questa è solo la convenzione utilizzata   per consentire la visualizzazione dei dati o   copiato / incollato in una finestra di query e   correre. Il TVP in realtà non lo è   implementato in quel modo — le file sono   trasmesso in streaming proprio come un grosso   inserire — ma potrebbe aver portato a questo   impressione che sia semplice   inserti.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top