MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

mongodb permite conexão de convidado mesmo quando a autenticação está habilitada


Sim, basicamente, você pode se conectar sem autenticação, mas não pode fazer quase nada. você pode executar db.serverBuildInfo()

db.version()

db.adminCommand({ping:1})

db.adminCommand({whatsmyuri:1})

db.adminCommand({features:1})

por exemplo, talvez alguns outros comandos.

O que parece um pouco doloroso para mim é capaz de executar:
for(var i=0;i++<20000;){db.adminCommand({forceerror:1})}

O que gera um pouco de log.

Eu verifiquei as fontes e você pode ver que esse comportamento é uma espécie de bug. As fontes da inicialização do shell estão em:https://github.com/mongodb/mongo/blob/master/src/mongo/shell/dbshell.cpp

Basicamente, existem dois tipos de teste em execução contra os valores de parâmetro fornecidos nos argumentos de senha e nome de usuário para o mongoshell. A inicialização verifica quando você forneceu um parâmetro --password e não escreveu uma senha depois. E há uma verificação quando você não especificou para iniciar sem db e especificou um nome de usuário que é maior que 0 do que tentará autenticar (verifique a linha 1043)

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

Mas isso é tudo. Se você não especificar credenciais, parece que se conectará sem nem tentar autenticar. Acho que na fase de inicialização deve-se verificar se o processo em que nos conectamos está sendo executado com autenticação e forçar a autenticação, se necessário.