あなたは間違いなく MongoDBサーバーをAndroidアプリケーションに直接公開しないでください。特に アプリケーションがデータベースへの書き込みアクセスを許可するユーザーロールを持つ場合。 Androidアプリにアクセスできる人なら誰でも、これらの資格情報を検出して抽出できる可能性があります。Androidアプリがより広いネットワークから接続するように設計されている場合、これによりMongoDBサーバーが不必要に公開されます。また、MongoDBサーバーを開いて、サービス拒否攻撃や不正なクエリを実行している可能性もあります。
MongoDBのドキュメントには、セキュリティの概念 に関する詳細なセクションがあります。 ネットワークの露出とセキュリティを含みます。データベース展開のベストプラクティスは、直接接続できるネットワークアドレスの範囲を制限することです。通常、直接接続は、同じネットワークインフラストラクチャ内でホストされている可能性のあるアプリケーションサーバーと監視アプリに限定する必要があります。
はい、推奨されるアプローチは、適切なAPIと認証制御を提供する独自のインターフェースを作成することです。作成する必要のあるカスタムコード(REST、JSON、Oauthなど)の量を最小限に抑えるために、PHPフレームワークやライブラリを見つけることができるはずです。
実装するインターフェースは次のことができます:
- エンドユーザーが実行できるクエリの種類にいくつかの制約を課します(完全なMongoDB APIではなく、提供したもののみ)
- アプリケーションが適切な
ユーザー権限 で認証できるようにします Androidアプリにデータベースのクレデンシャルを埋め込まずに - トークンベースの
OAuth などのユーザーセキュリティを追加します またはTwitter/Facebook認証 - MongoDBデプロイメントのインフラストラクチャの詳細から、Androidアプリが接続するエンドポイント(Webインターフェイス)を抽象化します
- 一般的なクエリまたはセッションデータのキャッシュを含める可能性があります