J'ai entendu dire que "tout le monde" est paramétrée à l'aide de requêtes SQL pour les protéger contre les attaques par injection SQL sans avoir à vailidate chaque pièce de la saisie de l'utilisateur.
Comment faites-vous cela? Le faire automatiquement lors de l'utilisation de procédures stockées?
Donc, ma compréhension, c'est non paramétrée:
cmdText = String.Format("SELECT foo FROM bar WHERE baz = '{0}'", fuz)
Cela serait-il paramétrable?
cmdText = String.Format("EXEC foo_from_baz '{0}'", fuz)
Ou dois-je faire quelque chose de plus vaste comme ceci afin de me protéger contre l'injection SQL?
With command
.Parameters.Count = 1
.Parameters.Item(0).ParameterName = "@baz"
.Parameters.Item(0).Value = fuz
End With
Existe-il d'autres avantages à utiliser des requêtes paramétrées outre les considérations de sécurité?
Mise à jour: Cet article a été lié à l'une des questions les références par Grotok. http://www.sommarskog.se/dynamic_sql.html