sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan undgår MongoDB SQL-injektionsroden?

MongoDB undgår potentialet for problemer ved ikke at parse.

Enhver API, hvor som helst, der involverer kodning af brugerdata i formateret tekst, der bliver parset, har potentialet for, at den, der ringer og den, der ringer, er uenige om, hvordan denne tekst skal analyseres. Disse uenigheder kan være sikkerhedsproblemer, når data misfortolkes som metadata. Dette er sandt, uanset om du taler om printf-formatstrenge, inklusive brugergenereret indhold i HTML, eller generering af SQL.

Da MongoDB ikke analyserer struktureret tekst for at finde ud af, hvad de skal gøre, er der ingen mulighed for at fejlfortolke brugerinput som instruktioner, og derfor ikke noget sikkerhedshul.

I øvrigt er rådet om at undgå API'er, der kræver parsing, punkt 5 i http://cr.yp.to/qmail/guarantee.html. Hvis du er interesseret i at skrive sikker software, er de andre 6 forslag også værd at se på.

Opdatering (2018):Det originale svar, som jeg gav det, forbliver efter min bedste overbevisning sandt. Fra det punkt, der sendes til MongoDB, til det, der sendes tilbage, er der intet SQL-injektionsangreb. De indsprøjtningsangreb, som jeg er klar over, sker uden for MongoDB og er faktisk problemer med, hvordan eksterne sprog og biblioteker opsætter den datastruktur, der vil blive videregivet til MongoDB. Desuden er placeringen af ​​sårbarheden i, hvordan data analyseres på vej til at blive en datastruktur. Derfor beskriver det originale svar præcist både, hvordan du undgår injektionsangreb, og hvad der sætter dig i fare for dem.

Men denne nøjagtighed er kold trøst for en programmør, der bliver ramt af injektionsangreb fra defekter, der ikke var tydelige i deres egen kode. De færreste af os skelner mellem det eksterne værktøj og alle lagene mellem vores kode og det eksterne værktøj. Og faktum er, at det kræver årvågenhed fra vores side at forudse og lukke for injektionsangreb. Med alt værktøj. Og dette vil forblive tilfældet i en overskuelig fremtid.



  1. Redis - Udløbne indekser slettes ikke

  2. Nogen detaljerede og specifikke grunde til hvorfor MongoDB er meget hurtigere end SQL DB'er?

  3. Om MongoDB, hvorfor bruger vi det? MongoDBs terminologi og implementering

  4. Hvordan sammenkæder man arrays fra flere dokumenter i MongoDB?