Implementazione della stored procedure VB.NET?

4

Durante la revisione del codice per un'applicazione vb.net mi sono imbattuto nella seguente implementazione delle stored procedure usando ExecuteDataSet

 Result = DBInstance.ExecuteDataSet(Name, paramArrayList.ToArray)

Qui, 'Nome' è il nome della stored procedure e i parametri di input del client vengono passati in una matrice. 'DBInstance' è ottenuto da DatabaseProviderFactory che deriva da Microsoft.Practices.EnterpriseLibrary.Data . La stored procedure utilizza i parametri nella query come mostrato di seguito:

CREATE procedure sp_name
(
    @para1      VARCHAR(25),
    @para2      VARCHAR(25)

)       
as  
SELECT x,y FROM mytable
WHERE p = @para1 AND q = @para2 

go

I parametri vengono passati alla funzione ExecuteDataSet () non convalidata .

Il metodo ExecuteDataSet esegue qualsiasi tipo di convalida sui dati passati ad esso al fine di prevenire SQLi? Non riesco a trovare alcun esempio su Internet che utilizza lo stesso metodo per implementare stored procedure.

Ho esaminato l'implementazione secure delle stored procedure in VB che utilizza chiaramente query parametrizzata. La mia domanda riguarda il metodo ExecuteDataSet sicuro / non sicuro per il passaggio dei parametri alle stored procedure.

    
posta Shurmajee 16.04.2014 - 08:04
fonte

1 risposta

0

No, non è necessaria alcuna convalida aggiuntiva per impedire l'iniezione SQL. Questo modello è sicuro. Quando si ha a che fare con una stored procedure che utilizza semplicemente i valori dei parametri come valori di predicato nell'istruzione SQL ( WHERE p = @p ) SQL Server sa che il valore del parametro è dato, non un'istruzione eseguibile. L'esecuzione del contenuto del parametro non è possibile.

L'unica volta che devi veramente preoccuparti del valore del parametro che stai passando in una stored procedure è quando lo esegui esplicitamente all'interno del proc, usando EXEC, EXECUTE o sp_executesql.

    
risposta data 07.05.2014 - 18:19
fonte

Leggi altre domande sui tag