Odpowiedź Sushanta jest nieprawidłowa. potrzebujesz być świadomym wstrzyknięcia NoSQL w MongoDB.
Przykład (zaczerpnięte stąd)
User.findOne({
"name" : req.params.name,
"password" : req.params.password
}, callback);
Jeśli req.params.password
to { $ne: 1 }
, użytkownik zostanie pobrany bez znajomości hasła ($ne
oznacza nie równa się 1 ).
Sterownik MongoDB
Możesz użyć mongo-sanitize:
Usunie wszystkie klucze zaczynające się od „$” w danych wejściowych, dzięki czemu możesz przekazać je do MongoDB bez obaw o nadpisanie przez złośliwych użytkowników.
var sanitize = require('mongo-sanitize');
var name = sanitize(req.params.name);
var password = sanitize(req.params.password);
User.findOne({
"name" : name,
"password" : password
}, callback);
Kierowca Mongoose
Zgodnie ze schematem, jeśli hasło jest polem tekstowym, skonwertuje obiekt { $ne: 1 }
do sznurka i żadne szkody nie zostaną wyrządzone. W takim przypadku nie musisz czyścić, pamiętaj tylko o ustawieniu odpowiedniego schematu.