mongo-sanitize
のようです npmモジュールは、生のエスケープ機能を開始する場所です。正直なところ、これは接続/エクスプレスミドルウェアレイヤーでより適切に聞こえます。マングースレイヤーでは、設計上、コードは、アプリケーション開発者によって作成されたかどうかに関して、クエリ/更新パラメーターに期待をかけないためです(この場合、サニタイズしないでください。サニタイズしないと正しく機能しません)、またはユーザー入力を伴う(サニタイズする必要があります)。したがって、ユーザー入力が入力される最も一般的な場所をサニタイズするミドルウェア関数をお勧めします:req.body
、req.query
、およびreq.params
。たとえば、(スケッチ)のようなことをするかもしれません:
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);