Con respecto a Pregunta 1 :
En el caso general, sí, lo hace. No conoce los detalles de un posible ataque futuro, por lo que su trabajo consiste en hacer que una explotación real de cualquier vulnerabilidad sea lo más difícil posible.
Como usted sabe, la misión de seguridad de la información es proporcionar tres valores: confidencialidad , integridad y disponibilidad . Supongamos que un pirata informático obtuvo una copia completa de su base de datos (que afecta a confidencialidad ). Al poder iniciar sesión como usuario, puede asumir integridad (modificando los datos del usuario y realizando acciones en su nombre) y disponibilidad (por ejemplo, cambiando el correo electrónico que puede ser utilizado para recuperar el acceso.
Antes de cambiar a la pregunta 2 . Que yo sepa, MongoDB también tiene control de acceso en un nivel de recopilación, por lo que podría ayudar a limitar la propagación de ataques. También puede considerar el cifrado de entradas confidenciales en una base de datos para que el acceso de solo lectura no autorizado no sea tan crítico.
Respecto a la pregunta 2:
No hay una forma correcta porque las decisiones de seguridad deben tomarse en función de muchos factores que pueden derivarse del análisis de riesgos. Puede almacenar credenciales de usuario en una base de datos diferente o crear un servidor de autenticación independiente, o usar servicios de autenticación de terceros (OAuth).
El objetivo principal aquí es mantener un equilibrio entre el precio de la implementación, el soporte de los controles de seguridad y una pérdida potencial que podría tener en caso de una violación de datos. Mi intuición es mantenerlo simple y seguir las recomendaciones básicas de seguridad (como el uso de contraseñas y la segregación de acceso mediante las herramientas de control de acceso de MongoDB) combinadas con otros controles de seguridad del sistema (como la validación estricta de entrada de usuario) que puede encontrar, por ejemplo, en OWASP ASVS checklist .