Escuché que "todo el mundo" está utilizando consultas SQL parametrizadas para protegerse contra ataques de inyección SQL sin tener que validar cada pieza de entrada del usuario.
¿Cómo haces esto? ¿Obtiene esto automáticamente cuando usa procedimientos almacenados?
Entonces, según tengo entendido, esto no está parametrizado:
cmdText = String.Format("SELECT foo FROM bar WHERE baz = '{0}'", fuz)
¿Se parametrizaría esto?
cmdText = String.Format("EXEC foo_from_baz '{0}'", fuz)
¿O necesito hacer algo más extenso como esto para protegerme de la inyección SQL?
With command
.Parameters.Count = 1
.Parameters.Item(0).ParameterName = "@baz"
.Parameters.Item(0).Value = fuz
End With
¿Existen otras ventajas de utilizar consultas parametrizadas además de las consideraciones de seguridad?
Actualización: Este gran artículo fue vinculado en una de las preguntas de referencia de Grotok. http://www.sommarskog.se/dynamic_sql.html