He oído que "todos" usan consultas SQL parametrizadas para protegerse contra ataques de inyección SQL sin tener que actualizar cada parte de la entrada del usuario.¿Cómo creo una consulta SQL parametrizada? ¿Por qué debería?
¿Cómo se hace esto? ¿Lo obtiene automáticamente cuando usa procedimientos almacenados?
Así que mi entender esto es no parametrizada:
cmdText = String.Format("SELECT foo FROM bar WHERE baz = '{0}'", fuz)
sería esto parametrizar?
cmdText = String.Format("EXEC foo_from_baz '{0}'", fuz)
¿O tengo que hacer algo más extenso como este para protegerme de la inyección de SQL?
With command
.Parameters.Count = 1
.Parameters.Item(0).ParameterName = "@baz"
.Parameters.Item(0).Value = fuz
End With
¿Existen otras ventajas en el uso de consultas parametrizadas además de las consideraciones de seguridad?
Actualización: este gran artículo fue vinculado en una de las referencias de preguntas de Grotok. http://www.sommarskog.se/dynamic_sql.html
Me pareció chocante que aparentemente esta pregunta no se haya formulado antes en Stackoverflow. ¡Muy buena! –
Oh, tiene. En términos muy diferentes, por supuesto, pero lo ha hecho. –
No use el bloque "Con". Nunca. "Con" es una de las razones por las cuales muchas personas tienen una fuerte aversión por VB. – yfeldblum