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

MongoDB$regexクエリと潜在的なエクスプロイト

    私のかなり個人的な直感は言う:気にしないでください。しかし、繰り返しになりますが、それでもそうする必要がある場合、またはそうしなければならない場合は、この要件に対処する方法についていくつかの提案があります。

    1. maxTimeMS()
    2. 正規表現の入力をサニタイズすることもできますが、長時間実行される可能性のある複雑なクエリの無限のバリエーションを考えると、それを支援するライブラリがそこにあるとは思えません。正規表現の長さを制限することも役立つかもしれませんが、一方で、ユーザーが任意のフィルターを使用して便利に検索できるようにするという目的に反する可能性があります。
    3. より構造化されたクエリ入力をプロビジョニングできます。ユーザーが単一の英数字テキストを入力できるようにするだけで、サーバー側で正規表現でラップして、たとえば、 「starts-with」、「contains」、「ends-with」クエリなど。
    4. ユーザーごとに1つの並列クエリ(セッション?ip?)のみを許可できます。これは、致命的なDoS攻撃に対しては少し役立つでしょうが、分散型攻撃に対しては確かに役立ちません...または、その単一の並列呼び出しのみを許可することもできます。システム全体のエンドポイント。



    1. MongoDBのidフィールドと_idフィールドの違い

    2. NodeJSとMongoDBFindAndModify()を削除または更新する必要があります

    3. mongodb c#特定のフィールドを選択

    4. 明確な$elemMatch