Ingat bahwa injeksi SQL disebabkan oleh string bermusuhan yang ditafsirkan sebagai perintah, bukan dengan memblokir perintah. Apakah Anda yakin mendapatkan kembali string asli, bukan versi string?
Misalnya ada perbedaan besar antara keduanya:"test"
dan "'test'"
.
Umumnya hanya karakter berbahaya yang lolos, sisanya dibiarkan apa adanya.
Menggunakan driver tingkat rendah sebaiknya dihindari. Coba dan gunakan perpustakaan seperti Sekuel untuk memberikan beberapa abstraksi dan lebih banyak dukungan. Modul itu mendukung pernyataan placeholder yang umumnya membuat pelolosan bukan masalah, itu ditangani secara otomatis.
Lihat bagian di kueri mentah dengan pengganti di mana Anda memiliki kemampuan untuk melakukan ini:
sequelize.query('SELECT * FROM projects WHERE status = ?',
{ replacements: ['active'], type: sequelize.QueryTypes.SELECT }
).then(function(projects) {
console.log(projects)
})
Tidak ada risiko kebocoran data pengguna karena Anda telah memberikannya sebagai nilai eksplisit yang ditangani dengan benar, bukan string sebaris dalam kueri.