Du definitivt vill inte exponera dina MongoDB-server(ar) för Android-applikationen direkt, särskilt om applikationen kommer att ha en användarroll som tillåter skrivåtkomst till databasen. Alla som har tillgång till Android-appen kan potentiellt upptäcka och extrahera dessa referenser, och om din Android-app är designad för att ansluta från ett bredare nätverk exponerar detta din MongoDB-server i onödan. Du kanske också öppnar din MongoDB-server för möjliga överbelastningsattacker eller oseriösa frågor.
MongoDB-dokumentationen har ett detaljerat avsnitt om säkerhetskoncept inklusive nätverksexponering och säkerhet. Bästa praxis för all databasdistribution är att begränsa antalet nätverksadresser som kan ansluta direkt. Generellt bör direkta anslutningar begränsas till dina applikationsservrar och övervakningsappar, som förmodligen finns inom samma nätverksinfrastruktur.
Ja, ett rekommenderat tillvägagångssätt skulle vara att skriva ditt eget gränssnitt som ger ett lämpligt API och autentiseringskontroller. Du bör kunna hitta ett PHP-ramverk och/eller bibliotek för att minimera mängden anpassad kod du måste skriva (t.ex. REST, JSON, Oauth).
Gränssnittet du implementerar kan:
- lägg vissa begränsningar på vilken typ av frågor som slutanvändare kan köra (endast vad du tillhandahåller, snarare än hela MongoDB API)
- tillåt applikationen att autentisera med lämpliga användarbehörigheter utan att ha databasuppgifterna inbäddade i Android-appen
- lägg till ytterligare användarsäkerhet som tokenbaserad OAuth eller Twitter/Facebook-autentisering
- abstrahera slutpunkten som Android-appen ansluter till (ditt webbgränssnitt) från infrastrukturdetaljen för din MongoDB-distribution
- inkludera eventuellt cachning för vanliga frågor eller sessionsdata