sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Debo acceder a mongodb directamente?

definitivamente no desea exponer su(s) servidor(es) MongoDB a la aplicación de Android directamente, especialmente si la aplicación tendrá un rol de usuario que permita el acceso de escritura a la base de datos. Cualquiera con acceso a la aplicación de Android podría potencialmente descubrir y extraer esas credenciales, y si su aplicación de Android está diseñada para conectarse desde una red más amplia, esto expone su servidor MongoDB innecesariamente. También puede estar abriendo su servidor MongoDB a posibles ataques de denegación de servicio o consultas no autorizadas.

La documentación de MongoDB tiene una sección detallada sobre Conceptos de seguridad incluida la exposición y la seguridad de la red. La mejor práctica para cualquier implementación de base de datos es limitar el rango de direcciones de red que se pueden conectar directamente. En general, las conexiones directas deben limitarse a sus servidores de aplicaciones y aplicaciones de monitoreo, que probablemente estén alojadas dentro de la misma infraestructura de red.

Sí, un enfoque recomendado sería escribir su propia interfaz que proporcione una API adecuada y controles de autenticación. Debería poder encontrar un marco PHP y/o bibliotecas para minimizar la cantidad de código personalizado que tiene que escribir (por ejemplo, REST, JSON, Oauth).

La interfaz que implemente puede:

  • establezca algunas restricciones en el tipo de consultas que los usuarios finales pueden ejecutar (solo lo que proporcione, en lugar de la API de MongoDB completa)
  • permitir que la aplicación se autentique con los privilegios de usuario apropiados sin tener las credenciales de la base de datos incrustadas en la aplicación de Android
  • agregue seguridad de usuario adicional, como OAuth basado en token o autenticación de Twitter/Facebook
  • resuma el punto final al que se conecta la aplicación de Android (su interfaz web) del detalle de la infraestructura de su implementación de MongoDB
  • posiblemente incluir almacenamiento en caché para consultas comunes o datos de sesión