sql >> Database >  >> NoSQL >> MongoDB

Hoe vermijdt MongoDB de puinhoop van SQL-injectie?

MongoDB vermijdt de kans op problemen door niet te parseren.

Elke API, waar dan ook, waarbij gebruikersgegevens worden gecodeerd in opgemaakte tekst die wordt geparseerd, heeft het potentieel voor de beller en de aangeroepene om het oneens te zijn over hoe die tekst moet worden geparseerd. Deze meningsverschillen kunnen beveiligingsproblemen zijn wanneer gegevens verkeerd worden geïnterpreteerd als metagegevens. Dit is waar, of je het nu hebt over printf-opmaakstrings, inclusief door gebruikers gegenereerde inhoud in HTML, of het genereren van SQL.

Aangezien MongoDB geen gestructureerde tekst ontleedt om erachter te komen wat te doen, is er geen mogelijkheid om gebruikersinvoer verkeerd te interpreteren als instructies, en dus geen mogelijk beveiligingslek.

Overigens is het advies om API's te vermijden die moeten worden geparseerd item 5 in http://cr.yp.to/qmail/guarantee.html. Als je geïnteresseerd bent in het schrijven van veilige software, zijn de andere 6 suggesties ook het bekijken waard.

Update (2018):Het oorspronkelijke antwoord zoals ik het gaf, blijft voor zover ik weet waar. Vanaf het punt van wat wordt verzonden naar MongoDB tot wat wordt teruggestuurd, is er geen SQL-injectie-aanval. De injectie-aanvallen die ik ken, gebeuren buiten MongoDB en zijn eigenlijk problemen in hoe externe talen en bibliotheken de gegevensstructuur opzetten die aan MongoDB wordt doorgegeven. Bovendien ligt de locatie van de kwetsbaarheid in de manier waarop gegevens worden geparseerd op weg naar een gegevensstructuur. Daarom beschrijft het oorspronkelijke antwoord nauwkeurig hoe u injectie-aanvallen kunt vermijden en wat u het risico ervan inhoudt.

Maar deze nauwkeurigheid is een koude troost voor een programmeur die wordt getroffen door injectieaanvallen van defecten die niet duidelijk waren in hun eigen code. Weinigen van ons maken onderscheid tussen de externe tool en alle lagen tussen onze code en die externe tool. En feit blijft dat het van onze kant waakzaamheid vereist om injectieaanvallen te anticiperen en af ​​te sluiten. Met alle tools. En dit zal in de nabije toekomst zo blijven.



  1. Database.yml verwijderen bij gebruik van Mongoid in Rails 3.2

  2. Hoe gedistribueerde/geclusterde cache in te schakelen bij gebruik van redis met spring-datacache

  3. Redis:toegang krijgen tot het Redis-logbestand

  4. JSON-objecten cachen aan serverzijde