SQLの場合のように、インジェクションが問題になる限り、リスクは大幅に低くなります...理論的には未知の攻撃ベクトルを介して可能ですが。
データ構造とプロトコルは、ドメイン固有言語内のエスケープされた値を利用するのではなく、バイナリおよびAPI駆動型です。基本的に、パーサーをだまして最後に「; db.dropCollection()」を追加することはできません。
クエリにのみ使用する場合は、おそらく問題ありません...ただし、少しの検証を使用するように注意してください:
- 英数字のみを確保します(nullや、通常は受け入れないその他のものをフィルタリングまたは無効化します)
- 用語ごとに最大長(255文字など)を適用します
- クエリ全体の最大長を適用する
- ストリップスペシャル 「$where」などの「$」で始まるパラメータ名
- ネストされた配列/ドキュメント/ハッシュを許可しないでください...文字列と整数のみ
また、空のクエリはすべてを返すことに注意してください。その戻り値に制限が必要な場合があります。 :)