2016-04-06 8 views
1

Angenommen, ich habe zwei Sammlungen in meiner MongoDB-Datenbank und einen HTTP-Dienst, mit dem ein Benutzer ein JSON-Objekt senden kann. Die geparsten json wird dann wie folgt verwendet:

db.public_collection.find(user_json).limit(10) 

Dies wird durch einen RBAC Benutzer ohne Schreibzugriff durchgeführt.

die $ Mit dem Betreiber könnte ein Benutzer:

  1. Alter Datensätze in der Sammlung (ich nehme an RBAC dies verhindert)?
  2. Datensätze in einer anderen Sammlung ändern?
  3. Führen Sie eine ressourcenintensive Abfrage durch, die den Server verlangsamt hat?
+0

Ich bin mir nicht sicher, was Sie fragen. Wenn Sie eine find() - Methode ausführen und der Benutzer keinen Lesezugriff hat, wie kann der Befehl find ausgeführt werden? –

+0

Ups, das war ein Tippfehler - jetzt geändert, um Zugriff zu schreiben. – TDN169

+0

[Was sollte jeder Programmierer über Sicherheit wissen?] (Https://stackoverflow.com/questions/2794016/what-should-every-programmer-know-about-security) – styvane

Antwort

0

Ihre RBAC-Einrichtung würde den Zugriff auf den HTTP-Dienst regeln. Wenn die Mongo-Find-Methode in Funktion ist, erlaubt sie nichts anderes, als Operationen zu dieser bestimmten Sammlung zu finden/zu lesen. Nichts schließt den Benutzer aus, eine teure Abfrage anzugeben. Es ist jedoch unwahrscheinlich, dass eine Abfrage, die eine einzelne Sammlung umfasst, sehr teuer ist, und Sie begrenzen die Ergebnisse auf 10.

0

Dies ist keine großartige Idee. Beispiele hierzu finden Sie in den Artikeln Testing for NoSQL Injection und NoSQL injection in MongoDB, in denen beschrieben wird, wie dies missbraucht werden könnte, um einen Denial-of-Service-Angriff zu erzeugen, indem JavaScript-Funktionen in die Abfrage eingefügt werden oder Informationen verloren gehen, auf die der Benutzer keinen Zugriff hat.

Verwandte Themen