Ho sentito che "tutti" utilizzano query SQL parametrizzate per proteggersi dagli attacchi di SQL injection senza dover vailidare ogni singolo input dell'utente.Come si crea una query SQL con parametri? Perché dovrei?
Come si fa? Lo ottieni automaticamente quando usi le stored procedure?
Quindi la mia comprensione questo è senza parametri:
cmdText = String.Format("SELECT foo FROM bar WHERE baz = '{0}'", fuz)
questo sarebbe parametrizzare?
cmdText = String.Format("EXEC foo_from_baz '{0}'", fuz)
Oppure ho bisogno di fare qualcosa di più esteso come questo al fine di proteggermi dall'iniezione SQL?
With command
.Parameters.Count = 1
.Parameters.Item(0).ParameterName = "@baz"
.Parameters.Item(0).Value = fuz
End With
Ci sono altri vantaggi nell'utilizzo di query parametrizzate oltre alle considerazioni sulla sicurezza?
Aggiornamento: Questo fantastico articolo è stato collegato in una delle domande di riferimenti di Grotok. http://www.sommarskog.se/dynamic_sql.html
Ho trovato scioccante che a quanto pare questa domanda non è stata posta prima su Stackoverflow. Molto buono! –
Oh, ha. Formulato in modo molto diverso, ovviamente, ma è così. –
Si prega di non utilizzare il blocco "Con". Mai. "With" è una delle ragioni per cui così tante persone hanno una forte antipatia per VB. – yfeldblum