Anda tidak boleh mencoba mencegah injeksi SQL hanya pada tingkat basis data. Begitu mereka sampai di sana, mereka kebanyakan sudah menangkapmu. Anda harus menggunakan parameter, masukan topeng dan hapus karakter buruk yang sudah ada di lapisan di atas. Alat (Kerangka?) seperti Entity Framework secara otomatis menghapus karakter berbahaya.
Menggunakan DBMS_ASSERT.ENQUOTE_NAME
bekerja dengan sangat baik di sini, tetapi saya sarankan melakukan ini juga di lapisan di atas.
Aturan umum (yang Anda ikuti di sini):Gunakan mekanisme keamanan yang sudah ada dan terbukti, jangan dibuat ulang!
Selain itu, pernyataan seperti
select * from users where username = 'IAm"WayUp';
benar-benar legal dan tidak berbahaya.
Dan bagaimana Anda memanggil fungsi/prosedur di DB? Anda juga rentan di sana, bukan?.