Saya pernah mendengar bahwa "semua orang" menggunakan kueri SQL berparameter untuk melindungi dari serangan injeksi SQL tanpa harus memvalidasi setiap masukan pengguna.
Bagaimana kamu melakukan ini? Apakah Anda mendapatkan ini secara otomatis saat menggunakan prosedur tersimpan?
Jadi pemahaman saya ini adalah non-parameterized:
cmdText = String.Format("SELECT foo FROM bar WHERE baz = '{0}'", fuz)
Apakah ini akan dijadikan parameter?
cmdText = String.Format("EXEC foo_from_baz '{0}'", fuz)
Atau apakah saya perlu melakukan sesuatu yang lebih ekstensif seperti ini untuk melindungi diri saya dari injeksi SQL?
With command
.Parameters.Count = 1
.Parameters.Item(0).ParameterName = "@baz"
.Parameters.Item(0).Value = fuz
End With
Apakah ada keuntungan lain menggunakan kueri berparameter selain pertimbangan keamanan?
Pembaruan: Artikel bagus ini ditautkan di salah satu referensi pertanyaan oleh Grotok. http://www.sommarskog.se/dynamic_sql.html