MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie vermeidet MongoDB das SQL-Injection-Chaos?

MongoDB vermeidet potenzielle Probleme, indem es nicht analysiert.

Jede API, egal wo, die Benutzerdaten in formatierten Text codiert, der geparst wird, kann dazu führen, dass sich der Aufrufer und der Angerufene nicht darüber einig sind, wie dieser Text geparst werden soll. Diese Meinungsverschiedenheiten können Sicherheitsprobleme darstellen, wenn Daten fälschlicherweise als Metadaten interpretiert werden. Dies gilt unabhängig davon, ob Sie über printf-Formatzeichenfolgen sprechen, einschließlich benutzergenerierter Inhalte in HTML, oder über die Generierung von SQL.

Da MongoDB strukturierten Text nicht parst, um herauszufinden, was zu tun ist, gibt es keine Möglichkeit, Benutzereingaben fälschlicherweise als Anweisungen zu interpretieren, und daher keine mögliche Sicherheitslücke.

Übrigens ist der Rat, APIs zu vermeiden, die eine Analyse erfordern, Punkt 5 in http://cr.yp.to/qmail/guarantee.html. Wenn Sie daran interessiert sind, sichere Software zu schreiben, sollten Sie sich auch die anderen 6 Vorschläge ansehen.

Update (2018):Die ursprüngliche Antwort, wie ich sie gegeben habe, bleibt nach bestem Wissen und Gewissen wahr. Von dem, was an MongoDB gesendet wird, bis zu dem, was zurückgesendet wird, gibt es keinen SQL-Injection-Angriff. Die mir bekannten Injection-Angriffe finden außerhalb von MongoDB statt und stellen eigentlich Probleme dar, wie externe Sprachen und Bibliotheken die Datenstruktur einrichten, die an MongoDB übergeben wird. Darüber hinaus liegt die Schwachstelle darin, wie Daten auf dem Weg zu einer Datenstruktur analysiert werden. Daher beschreibt die ursprüngliche Antwort genau, wie Sie Injektionsangriffe vermeiden können und was Sie einem solchen Risiko aussetzt.

Aber diese Genauigkeit ist ein schwacher Trost für einen Programmierer, der von Injection-Angriffen aufgrund von Fehlern getroffen wird, die in seinem eigenen Code nicht offensichtlich waren. Nur wenige von uns unterscheiden zwischen dem externen Tool und allen Ebenen zwischen unserem Code und diesem externen Tool. Und es bleibt die Tatsache, dass es unsererseits Wachsamkeit erfordert, um Injektionsangriffe zu antizipieren und abzuwehren. Mit allen Werkzeugen. Und das wird auf absehbare Zeit auch so bleiben.