Ouvi dizer que "todos" estão usando consultas SQL parametrizadas para se proteger contra ataques de injeção de SQL, sem ter que validar cada entrada do usuário.
Como você faz isso? Você obtém isso automaticamente ao usar procedimentos armazenados?
Então, meu entendimento é não parametrizado:
cmdText = String.Format("SELECT foo FROM bar WHERE baz = '{0}'", fuz)
Isso seria parametrizado?
cmdText = String.Format("EXEC foo_from_baz '{0}'", fuz)
Ou preciso fazer algo mais extenso como esse para me proteger da injeção de SQL?
With command
.Parameters.Count = 1
.Parameters.Item(0).ParameterName = "@baz"
.Parameters.Item(0).Value = fuz
End With
Existem outras vantagens em usar consultas parametrizadas além das considerações de segurança?
Atualização: Este ótimo artigo foi linkado em uma das referências de questões por Grotok. http://www.sommarskog.se/dynamic_sql.html