Ho sentito che "tutti" utilizzano query SQL parametrizzate per proteggersi dagli attacchi di SQL injection senza dover convalidare ogni parte dell'input dell'utente.
Come fai a fare questo? Lo ottieni automaticamente quando usi le stored procedure?
Quindi la mia comprensione non è parametrizzata:
cmdText = String.Format("SELECT foo FROM bar WHERE baz = '{0}'", fuz)
Questo sarebbe parametrizzato?
cmdText = String.Format("EXEC foo_from_baz '{0}'", fuz)
O devo fare qualcosa di più ampio come questo per 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 uno dei riferimenti alle domande di Grotok. http://www.sommarskog.se/dynamic_sql.html