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

mongodb tillader gæsteforbindelse, selv når godkendelse er aktiveret

Ja grundlæggende kan du oprette forbindelse uden godkendelse, men kan næsten ikke gøre noget. du kan køre db.serverBuildInfo()

db.version()

db.adminCommand({ping:1})

db.adminCommand({whatsmyuri:1})

db.adminCommand({features:1})

for eksempel måske nogle andre kommandoer.

Hvilket virker lidt smertefuldt for mig er at kunne løbe:

for(var i=0;i++<20000;){db.adminCommand({forceerror:1})}

Hvilket genererer en smule log.

Jeg tjekkede kilderne ud, og du kan se, at denne adfærd er en slags fejl. Kilderne til shell-opstarten er i:https://github.com/mongodb/mongo/blob/master/src/mongo/shell/dbshell.cpp

Grundlæggende er der to typer test, der kører mod parameterværdierne givet i adgangskode- og brugernavnargumenter for mongoshell. Opstarten kontrollerer, hvornår du har angivet en --password-parameter og ikke har skrevet en adgangskode efter. Og der er et flueben, når du ikke har angivet at starte uden db, og du har angivet et brugernavn, der er længere end 0, end det vil forsøge at godkende (tjek linje 1043)

if (!nodb && username.size()) .

Men det er alt. Hvis du slet ikke angiver legitimationsoplysninger, ser det ud til, at det vil oprette forbindelse uden selv at forsøge at godkende. Jeg gætter på, at det i initialiseringsfasen skal kontrolleres, om processen, hvor vi forbinder, kører med godkendelse og tvinge godkendelse ud, hvis det er nødvendigt.



  1. Hvordan opretter man forbindelse til en anden MongoDB-database som superbruger ved hjælp af NodeJS?

  2. ember js association adgang backend nodejs mongoose

  3. Oprettelse af en mongo-visning, der afhænger af det aktuelle tidspunkt

  4. mongoose:Sådan indsætter du et enkelt underdokument - ikke et array