¿mi pila está segura en mongodb si uso los roles de nombre de usuario / contraseña de mongos fuera de la caja? [cerrado]

1

es mi pila segura en mongodb si uso mongos nombre de usuario / contraseña listos para usar y roles para generar tokens, y personalmente no intento crear un hash + sal para los nombres de usuario y amp; contraseñas (al tener una combinación de sales de DB locales, sales de AWS externas y sales de punto final codificadas)?

La pila: Estoy alojado en AWS con un archivo pem que permite el acceso SSH.

Mis grupos de seguridad solo permiten SSH desde mi dirección IP.

Tengo un equilibrador de carga que usa SSL y apunta a nginx, que apunta al nodo. El nodo obliga a todo el tráfico http a redirigir a https. y mi base de datos es mongo.

mongo no requiere un nombre de usuario o contraseña para consultar datos.

el equilibrador de carga permite que todo el tráfico HTTP y HTTPS entre y salga. el EC2 solo permite HTTP y HTTPS desde el equilibrador de carga.

Tengo puntos finales de API públicos en los que genero un token a través del inicio de sesión con un nombre de usuario correcto y amp; contraseña.

No almaceno la contraseña de los usuarios en la base de datos, en lugar de ello hago un hash usando

crypto.createHmac('sha512', server_salt + user_salt)

donde se podría adivinar la sal del usuario mediante una combinación de la información de los usuarios en la base de datos más una cadena codificada en mi script js, pero la sal del servidor no se encuentra en mi base de datos. se encuentra en un servicio de repositorio de Amazon.

La base de datos que tengo que contiene tokens activos para los usuarios no expone el ID de usuario para cada token, sino que, de nuevo, tiene un hash de una sola vía. Las fichas caducan cada 24 horas. (Si realizo una restricción de acceso a nivel de colección, expondría qué ID de usuario se asigna a cada token, pero la colección estará restringida para que solo el usuario mismo acceda a ella, por lo que debería ser seguro).

las cadenas de token se generan al iniciar sesión usando:

crypto.randomBytes(120,function(err,byte_token)

Si un token no es válido para un usuario, devuelvo 401.

Si un usuario intenta acceder a la información de usuario que no le pertenece, devuelvo 403.

Los tokens caducan cada 24 horas, usando mongos expireAfterSeconds enlace

¿Pensamientos?

    
pregunta user1709076 26.01.2017 - 00:35
fuente

0 respuestas

Lea otras preguntas en las etiquetas