MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

mongodb umożliwia połączenie gościa nawet przy włączonej autoryzacji

Tak, w zasadzie możesz się połączyć bez uwierzytelniania, ale nie możesz zrobić prawie nic. możesz uruchomić db.serverBuildInfo()

db.version()

db.adminCommand({ping:1})

db.adminCommand({whatsmyuri:1})

db.adminCommand({features:1})

na przykład może jakieś inne polecenia.

Co wydaje mi się trochę bolesne, ponieważ potrafię biegać:

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

Co generuje trochę dziennika.

Sprawdziłem źródła i widać, że to zachowanie jest rodzajem błędu. Źródła uruchamiania powłoki znajdują się w:https://github.com/mongodb/mongo/blob/master/src/mongo/shell/dbshell.cpp

Zasadniczo istnieją dwa rodzaje testów działających na wartości parametrów podanych w argumentach hasła i nazwy użytkownika dla powłoki mongoshell. Uruchamianie sprawdza, czy podałeś parametr --password i nie wpisałeś hasła. I jest sprawdzanie, gdy nie określiłeś, aby rozpocząć bez db, a określiłeś nazwę użytkownika dłuższą niż 0, niż będzie próbował się uwierzytelnić (linia sprawdzania 1043)

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

Ale to wszystko. Jeśli w ogóle nie określisz poświadczeń, wydaje się, że połączy się nawet bez próby uwierzytelnienia. Myślę, że w fazie inicjalizacji należy sprawdzić, czy proces, w którym się łączymy, działa z uwierzytelnianiem i wymusić uwierzytelnienie, jeśli jest to konieczne.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. jak uczynić zmienną unikalnym kluczem w manguście?

  2. Zaktualizuj wiele wierszy warunkowo

  3. mongodb znajdź według wielu elementów tablicy

  4. Transakcje Mongoose.js

  5. Zainstaluj sterowniki phpMongo w systemie Windows