私はnode.js、express、およびmongooseで遊んでいます。
何かをすぐに実行できるようにするために、Express クエリ文字列オブジェクトをマングースの検索関数に直接渡しています。私が興味を持っているのは、この慣習が実際のアプリでどれほど危険かということです。RDBMS が SQL インジェクションに対して非常に脆弱であることはわかっています。「入力をサニタイズする」という良いアドバイスは別として、このコードがいかに悪いか:
app.get('/query', function (req, res) {
models.findDocs(req.query, function (err, docs) {
res.send(docs);
});
});
つまり、 get リクエストhttp://localhost:8080/query?name=ahsteele&status=a
は、次のものを findDocs 関数に押し込むだけです:
{
name: 'ahsteele',
status: 'a'
}
これは多くの理由で不快に感じますが、どれほど安全ではないのでしょうか? クエリ パラメータを mongodb に渡すためのベスト プラクティスは何ですか? Express はすぐに使えるサニタイズを提供しますか?