Controllo iniezione gruppo C #
-
03-07-2019 - |
Domanda
Sto creando un assembly in C # per MS SQL 2005. Questo assembly crea una procedura memorizzata ed esegue una query dinamica basata sui parametri passati nella procedura memorizzata.
Esiste una semplice funzione in C # per impedire l'iniezione SQL?
Ad esempio
string myQuery = "SELECT * FROM dbo.MyTable WHERE lastName = '" + injectionCheck(arg1) + "'";
A questa domanda è stata data risposta per la query standard ... ma in situazioni in cui non è possibile creare una query veramente dinamica cosa posso usare in C # per il controllo dell'iniezione?
Ad esempio, probabilmente non funzioneranno:
utilizzando @dbName;
SELEZIONA * DA @table
TASTO SIMMETRICO APERTO @keyName
etc
Soluzione
Usa parametri associati:
SqlCommand cmd = new SqlCommand(myQuery, conn);
cmd.Parameters.Add("@lastname", SqlDbType.NVarChar, 10, lastName);
Altri suggerimenti
Usa parametri ....
(Questo è già stato pubblicato spesso)
string myQuery = "SELECT * FROM myTable WHERE lastname = @p_name";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = myQuery;
cmd.Parameters.Add ("@p_name", SqlDbType.Varchar).Value = "melp";
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow