sql >> データベース >  >> NoSQL >> MongoDB

MongoDBでのJavaScriptNoSQLインジェクション防止

    Sushantの答えは正しくありません。 必要 MongoDBでのNoSQLインジェクションに注意してください。

    (ここから取得)

    User.findOne({
        "name" : req.params.name, 
        "password" : req.params.password
    }, callback); 
    

    req.params.passwordの場合 は{ $ne: 1 } 、ユーザーはパスワードを知らなくても取得されます($ne 1に等しくないを意味します 。

    MongoDBドライバー

    mongo-sanitizeを使用できます:

    入力で「$」で始まるキーをすべて削除するため、悪意のあるユーザーによる上書きを心配することなく、MongoDBに渡すことができます。

    var sanitize = require('mongo-sanitize');
    
    var name = sanitize(req.params.name);
    var password = sanitize(req.params.password);
    
    User.findOne({
        "name" : name, 
        "password" : password
    }, callback); 
    

    マングースドライバー

    スキーマに従うため、パスワード 文字列フィールドである場合、オブジェクトを変換します{ $ne: 1 } 弦に損傷を与えることはありません。この場合、サニタイズする必要はありません。適切なスキーマを設定することを忘れないでください。



    1. MongoDB書き込みの懸念:3つの知っておくべき警告

    2. MongoDBスキーマ設計-小さなドキュメントが多いですか、それとも大きなドキュメントが少ないですか?

    3. 配列フィールドが空でないMongoDBレコードを検索します

    4. MongoDB-すべてのアイテムをループせずにJavaでコレクションをコピーします