Jawaban Sushant salah. Anda membutuhkan untuk mengetahui injeksi NoSQL di MongoDB.
Contoh (diambil dari sini)
User.findOne({
"name" : req.params.name,
"password" : req.params.password
}, callback);
Jika req.params.password
adalah { $ne: 1 }
, pengguna akan diambil tanpa mengetahui kata sandinya ($ne
artinya tidak sama dengan 1 ).
Pengandar MongoDB
Anda dapat menggunakan mongo-sanitize:
Ini akan menghapus semua kunci yang dimulai dengan '$' di input, sehingga Anda dapat meneruskannya ke MongoDB tanpa khawatir tentang penimpaan pengguna jahat.
var sanitize = require('mongo-sanitize');
var name = sanitize(req.params.name);
var password = sanitize(req.params.password);
User.findOne({
"name" : name,
"password" : password
}, callback);
Pengemudi Luwak
Karena mengikuti skema, jika sandi adalah bidang string, itu akan mengubah objek { $ne: 1 }
untuk string dan tidak ada kerusakan akan dilakukan. Dalam hal ini, Anda tidak perlu membersihkan, ingatlah untuk mengatur skema yang tepat.