Saya melihat prosedur lama yang tersimpan hari ini dan memerhatikan itu menggunakan quotename
parameter input. Setelah melakukan penggalian untuk mencari tahu apa yang dilakukannya, saya menemukan situs ini . Saya sekarang mengerti apa yang dilakukannya dan bagaimana menggunakannya tetapi situs tersebut mengatakan itu digunakan sebagai mitigasi dari serangan SQL Injection. Ketika saya dulu mengembangkan aplikasi yang secara langsung menanyakan database, menggunakan asp.net, saya akan menggunakan parameter ADO.Net untuk mengirimkan input pengguna sebagai nilai literal dan tidak pernah benar-benar khawatir tentang melindunginya dalam prosedur tersimpan saya.
Saya sekarang menulis prosedur tersimpan yang akan digunakan oleh aplikasi yang tidak saya tulis jadi saya perlu mencoba dan melindungi dari serangan injeksi di tingkat prosedur, adalah quotename
cara terbaik untuk melakukan ini atau apakah ada fungsi yang lebih baru / lebih baik metode?
Kode yang memberi saya pola pikir ini ( @parm1
adalah parameter input pengguna):
'SELECT project [Project], project_desc [Description],
customer [Customer], cpnyid [Company]
FROM PJPROJ (nolock)
where project like ' + quotename(@parm1,'''') + '