Sushants svar er ikke korrekt. Du har brug for at være opmærksom på NoSQL-injektion i MongoDB.
Eksempel (taget herfra)
User.findOne({
"name" : req.params.name,
"password" : req.params.password
}, callback);
Hvis req.params.password
er { $ne: 1 }
, vil brugeren blive hentet uden at kende adgangskoden ($ne
betyder ikke lig med 1 ).
MongoDB-driver
Du kan bruge mongo-sanitize:
Det vil fjerne alle nøgler, der starter med '$' i inputtet, så du kan videregive det til MongoDB uden at bekymre dig om ondsindet brugeroverskrivning.
var sanitize = require('mongo-sanitize');
var name = sanitize(req.params.name);
var password = sanitize(req.params.password);
User.findOne({
"name" : name,
"password" : password
}, callback);
Mongoose Driver
Som det følger et skema, hvis adgangskoden er et strengfelt, vil det konvertere objektet { $ne: 1 }
at snore, og ingen skade vil ske. I dette tilfælde behøver du ikke at rense, bare husk at indstille et ordentligt skema.