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

mongodb consente la connessione guest anche quando l'autenticazione è abilitata

Sì, fondamentalmente puoi connetterti senza autenticazione ma non puoi fare quasi nulla. puoi eseguire db.serverBuildInfo()

db.version()

db.adminCommand({ping:1})

db.adminCommand({whatsmyuri:1})

db.adminCommand({features:1})

per esempio, forse qualche altro comando.

Il che sembra un po' doloroso per me è che è in grado di correre:

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

Che genera un po' di log.

Ho controllato le fonti e puoi vedere che questo comportamento è una specie di bug. I sorgenti dell'avvio della shell sono in:https://github.com/mongodb/mongo/blob/master/src/mongo/shell/dbshell.cpp

Fondamentalmente ci sono due tipi di test in esecuzione rispetto ai valori dei parametri forniti negli argomenti password e nome utente per mongoshell. L'avvio verifica quando hai fornito un parametro --password e non hai scritto una password dopo. E c'è un controllo quando non hai specificato di iniziare senza db e hai specificato un nome utente che è più lungo di 0 di quello che tenterà di autenticare (controlla la riga 1043)

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

Ma questo è tutto. Se non specifichi affatto le credenziali, sembra che si connetterà senza nemmeno provare ad autenticarsi. Immagino che nella fase di inizializzazione dovrebbe essere verificato se il processo in cui ci colleghiamo è in esecuzione con l'autenticazione e forzare l'autenticazione se necessario.