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

Devo accedere direttamente a mongodb?

Tu sicuramente non voglio esporre i tuoi server MongoDB direttamente all'applicazione Android, soprattutto se l'applicazione avrà un ruolo utente che consente l'accesso in scrittura al database. Chiunque abbia accesso all'app Android potrebbe potenzialmente scoprire ed estrarre tali credenziali e se la tua app Android è progettata per connettersi da una rete più ampia, questo espone inutilmente il tuo server MongoDB. Potresti anche aprire il tuo server MongoDB a possibili attacchi denial-of-service o query non autorizzate.

La documentazione di MongoDB ha una sezione dettagliata su Concetti di sicurezza compresa l'esposizione e la sicurezza della rete. La procedura consigliata per qualsiasi distribuzione di database consiste nel limitare l'intervallo di indirizzi di rete che possono connettersi direttamente. In genere le connessioni dirette dovrebbero essere limitate ai server delle applicazioni e alle app di monitoraggio, che probabilmente sono ospitate all'interno della stessa infrastruttura di rete.

Sì, un approccio consigliato sarebbe quello di scrivere la propria interfaccia che fornisca un'API adeguata e controlli di autenticazione. Dovresti essere in grado di trovare un framework PHP e/o librerie per ridurre al minimo la quantità di codice personalizzato che devi scrivere (ad es. REST, JSON, Oauth).

L'interfaccia che implementi può:

  • imporre alcuni vincoli al tipo di query che gli utenti finali possono eseguire (solo ciò che fornisci, anziché l'API MongoDB completa)
  • consenti all'applicazione di autenticarsi con privilegi utente senza avere le credenziali del database incorporate nell'app Android
  • aggiungi ulteriore sicurezza per gli utenti come OAuth basato su token o autenticazione Twitter/Facebook
  • astrarre l'endpoint a cui si connette l'app Android (l'interfaccia web) dai dettagli dell'infrastruttura della distribuzione di MongoDB
  • Potenzialmente includere la memorizzazione nella cache per query comuni o dati di sessione