Có vẻ như mongo-sanitize
mô-đun npm là nơi bắt đầu cho chức năng thoát thô. Thành thật mà nói, điều này có vẻ phù hợp hơn ở lớp phần mềm trung gian kết nối / thể hiện bởi vì ở lớp mongoose, theo thiết kế, mã không đặt ra bất kỳ kỳ vọng nào về các tham số truy vấn / cập nhật về việc liệu chúng có được viết bởi nhà phát triển ứng dụng hay không (trong trường hợp đó, chúng không được khử trùng hoặc chúng sẽ không hoạt động chính xác) hoặc liên quan đến đầu vào của người dùng (phải được làm sạch). Vì vậy, tôi khuyên bạn nên sử dụng các chức năng phần mềm trung gian để làm sạch những nơi phổ biến nhất cho đầu vào của người dùng để nhập:req.body
, req.query
và req.params
. Vì vậy, ví dụ, bạn có thể làm một cái gì đó như (phác thảo):
var json = require("body-parser").json;
var sanitize = require("mongo-sanitize");
function cleanBody(req, res, next) {
req.body = sanitize(req.body);
next();
}
function updateUser(req, res) {
//...
// safe to build an update query involving req.body here
}
app.put("/api/users", json(), cleanBody, updateUser);