"Herkesin", her kullanıcı girdisini doğrulamak zorunda kalmadan SQL enjeksiyon saldırılarına karşı koruma sağlamak için parametreli SQL sorguları kullandığını duydum.
Bunu nasıl yapıyorsun? Depolanan prosedürleri kullanırken bunu otomatik olarak alıyor musunuz?
Anladığım kadarıyla bu parametreleştirilmemiş:
cmdText = String.Format("SELECT foo FROM bar WHERE baz = '{0}'", fuz)
Bu parametrelendirilebilir mi?
cmdText = String.Format("EXEC foo_from_baz '{0}'", fuz)
Yoksa kendimi SQL enjeksiyonundan korumak için bunun gibi daha kapsamlı bir şey mi yapmalıyım?
With command
.Parameters.Count = 1
.Parameters.Item(0).ParameterName = "@baz"
.Parameters.Item(0).Value = fuz
End With
Güvenlik hususları dışında parametreli sorguları kullanmanın başka avantajları var mı?
Güncelleme: Bu harika makale, Grotok'un soru referanslarından birine bağlandı. http://www.sommarskog.se/dynamic_sql.html