MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment MongoDB évite-t-il le désordre des injections SQL ?

MongoDB évite les problèmes potentiels en ne parsant pas.

N'importe quelle API, n'importe où, qui implique l'encodage de données utilisateur dans un texte formaté qui est analysé, peut amener l'appelant et l'appelé à être en désaccord sur la manière dont ce texte doit être analysé. Ces désaccords peuvent être des problèmes de sécurité lorsque les données sont interprétées à tort comme des métadonnées. Cela est vrai, que vous parliez de chaînes de format printf, y compris le contenu généré par l'utilisateur en HTML, ou de générer du SQL.

Étant donné que MongoDB n'analyse pas le texte structuré pour déterminer ce qu'il faut faire, il n'y a aucune possibilité d'interpréter à tort l'entrée de l'utilisateur comme des instructions, et donc aucune faille de sécurité possible.

Incidemment, le conseil d'éviter les API qui nécessitent une analyse est l'élément 5 dans http://cr.yp.to/qmail/guarantee.html. Si vous êtes intéressé par l'écriture de logiciels sécurisés, les 6 autres suggestions valent également la peine d'être examinées.

Mise à jour (2018):La réponse originale telle que je l'ai donnée reste fidèle au meilleur de ma connaissance. Du point de ce qui est envoyé à MongoDB à ce qui est renvoyé, il n'y a pas d'attaque par injection SQL. Les attaques par injection dont j'ai connaissance se produisent en dehors de MongoDB et sont en fait des problèmes dans la façon dont les langages et les bibliothèques externes configurent la structure de données qui sera transmise à MongoDB. De plus, la vulnérabilité réside dans la manière dont les données sont analysées avant de devenir une structure de données. Par conséquent, la réponse originale décrit avec précision à la fois comment éviter les attaques par injection et ce qui vous expose à un risque.

Mais cette précision est un piètre réconfort pour un programmeur qui est frappé par des attaques par injection à partir de défauts qui n'étaient pas évidents dans son propre code. Peu d'entre nous font la distinction entre l'outil externe et toutes les couches entre notre code et cet outil externe. Et il n'en demeure pas moins qu'il faut de la vigilance de notre part pour anticiper et endiguer les attaques par injection. Avec tous les outils. Et cela restera le cas dans un avenir prévisible.