Sie auf jeden Fall Sie möchten Ihre(n) MongoDB-Server nicht direkt der Android-Anwendung aussetzen, insbesondere ob die Anwendung eine Benutzerrolle haben wird, die Schreibzugriff auf die Datenbank erlaubt. Jeder mit Zugriff auf die Android-App könnte diese Anmeldeinformationen möglicherweise entdecken und extrahieren, und wenn Ihre Android-App darauf ausgelegt ist, eine Verbindung von einem breiteren Netzwerk herzustellen, wird Ihr MongoDB-Server unnötigerweise exponiert. Möglicherweise öffnen Sie Ihren MongoDB-Server auch für mögliche Denial-of-Service-Angriffe oder betrügerische Abfragen.
Die MongoDB-Dokumentation enthält einen ausführlichen Abschnitt zu Sicherheitskonzepten einschließlich Netzwerkexposition und Sicherheit. Best Practice für jede Datenbankbereitstellung ist es, den Bereich der Netzwerkadressen zu begrenzen, die eine direkte Verbindung herstellen können. Im Allgemeinen sollten direkte Verbindungen auf Ihre Anwendungsserver und Überwachungs-Apps beschränkt sein, die wahrscheinlich in derselben Netzwerkinfrastruktur gehostet werden.
Ja, ein empfohlener Ansatz wäre, eine eigene Schnittstelle zu schreiben, die eine geeignete API und Authentifizierungskontrollen bereitstellt. Sie sollten in der Lage sein, ein PHP-Framework und/oder Bibliotheken zu finden, um die Menge an benutzerdefiniertem Code zu minimieren, den Sie schreiben müssen (z. B. REST, JSON, Oauth).
Die von Ihnen implementierte Schnittstelle kann:
- legen Sie einige Einschränkungen für die Art der Abfragen fest, die Endbenutzer ausführen können (nur das, was Sie bereitstellen, und nicht die vollständige MongoDB-API)
- ermöglichen Sie der Anwendung, sich mit den entsprechenden Benutzerberechtigungen zu authentifizieren ohne dass die Datenbankanmeldeinformationen in die Android-App eingebettet sind
- Fügen Sie zusätzliche Benutzersicherheit wie tokenbasiertes OAuth hinzu oder Twitter/Facebook-Authentifizierung
- abstrahieren Sie den Endpunkt, mit dem die Android-App eine Verbindung herstellt (Ihre Weboberfläche), aus den Infrastrukturdetails Ihrer MongoDB-Bereitstellung
- möglicherweise Caching für häufige Abfragen oder Sitzungsdaten enthalten