MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Devo acessar o mongodb diretamente?


Você definitivamente não queira expor seu(s) servidor(es) MongoDB diretamente ao aplicativo Android, especialmente se o aplicativo terá uma função de usuário permitindo acesso de gravação ao banco de dados. Qualquer pessoa com acesso ao aplicativo Android pode descobrir e extrair essas credenciais e, se seu aplicativo Android for projetado para se conectar a partir de uma rede mais ampla, isso expõe seu servidor MongoDB desnecessariamente. Você também pode estar abrindo seu servidor MongoDB para possíveis ataques de negação de serviço ou consultas não autorizadas.

A documentação do MongoDB tem uma seção detalhada sobre Conceitos de segurança incluindo exposição e segurança da rede. A melhor prática para qualquer implantação de banco de dados é limitar o intervalo de endereços de rede que podem se conectar diretamente. Geralmente, as conexões diretas devem ser limitadas aos seus servidores de aplicativos e aplicativos de monitoramento, que provavelmente estão hospedados na mesma infraestrutura de rede.

Sim, uma abordagem recomendada seria escrever sua própria interface que fornece uma API adequada e controles de autenticação. Você deve ser capaz de encontrar uma estrutura e/ou bibliotecas PHP para minimizar a quantidade de código personalizado que você precisa escrever (por exemplo, REST, JSON, Oauth).

A interface que você implementa pode:
  • coloque algumas restrições no tipo de consultas que os usuários finais podem executar (somente o que você fornecer, em vez da API completa do MongoDB)
  • permita que o aplicativo seja autenticado com os privilégios de usuário apropriados sem ter as credenciais do banco de dados incorporadas ao aplicativo Android
  • adicionar segurança de usuário adicional, como OAuth baseado em token ou autenticação do Twitter/Facebook
  • abstraia o endpoint ao qual o aplicativo Android se conecta (sua interface da Web) dos detalhes da infraestrutura de sua implantação do MongoDB
  • possivelmente incluir armazenamento em cache para consultas comuns ou dados de sessão