Domanda

Utilizzando SqlParameters è un metodo consigliato per prevenire SQL Injection nelle query di database. Dove posso trovare il codice / funzione che disinfetta internamente questi parametri? Mi piacerebbe ri-utilizzare per questa funzione in un'implementazione personalizzata di mine. Ho cercato di trovare utilizzando Reflector, ma senza successo.

È stato utile?

Soluzione

Protegge contro SQL Injection, non XSS, e non esiste un codice o la funzione che disinfetta i dati dei parametri.

La protezione si ottiene trasmettendo i valori dei parametri al server separatamente dalla stringa di query, in modo che i valori sono non sostituito direttamente nella dichiarazione di sql.

Così, invece di sql server in esecuzione qualcosa di simile:

SELECT * FROM [table] WHERE [column] = ParameterValue

E 'più come se correva qualcosa di simile:

DECLARE @ParamValue int
  -- //@ParamValue variable is populated from the framework in a safe way
SELECT * FROM [table] WHERE [column] = @ParamValue

Questo è più veloce e molto più sicuro e robusto di una funzione che avrebbe dovuto valutare i dati dei parametri. Tale funzione avrebbe bisogno di essere molto complesso (leggi: soggetto a errori) per gestire le cose come caratteri di escape personalizzato e miglioramenti futuri.

Questa ordinatamente lato passi l'intera questione: i dati sono dati, il codice è il codice, e mai i due si incontreranno

.

Il tuo commento all'altro, ora cancellato, risposta:

  

Se mi passa nel valore O'Rourke, esso codifica che sia O''Rourke in modo che non si rompe la query. Corretta?

No, questo non è corretto. La variabile viene creato direttamente da un blocco di dati, e quindi è necessaria scampo speciale o codifica.

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