Ich habe gehört, dass "jeder" parametrisierte SQL-Abfragen verwendet, um sich vor SQL-Injection-Angriffen zu schützen, ohne dass jede Benutzereingabe überprüft werden muss.
Wie machst Du das? Erhalten Sie dies automatisch, wenn Sie gespeicherte Prozeduren verwenden?
Mein Verständnis ist also nicht parametrisiert:
cmdText = String.Format("SELECT foo FROM bar WHERE baz = '{0}'", fuz)
Würde dies parametrisiert werden?
cmdText = String.Format("EXEC foo_from_baz '{0}'", fuz)
Oder muss ich etwas umfangreicheres tun, um mich vor SQL-Injection zu schützen?
With command
.Parameters.Count = 1
.Parameters.Item(0).ParameterName = "@baz"
.Parameters.Item(0).Value = fuz
End With
Gibt es neben den Sicherheitsaspekten noch weitere Vorteile bei der Verwendung parametrisierter Abfragen?
Update: Dieser großartige Artikel wurde in einer der Fragen von Grotok verlinkt. http://www.sommarskog.se/dynamic_sql.html