I parametri con valori di tabella di SQL Server 2008 sono vulnerabili agli attacchi SQL injection?
-
07-07-2019 - |
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?
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.