Prácticas para almacenar el nombre de usuario / contraseña en aplicaciones web

17

He leído la siguiente pregunta: Almacenamiento de contraseñas en la aplicación Java pero No encuentro las respuestas útiles para mi caso.

Así que aquí está mi pregunta de alguna manera relacionada con eso. Tengo una aplicación web Java con un back-end DataBase de acceso seguro con nombre de usuario y contraseña.

En este momento, el nombre de usuario / contraseña se encuentra en un archivo .properties en el servidor web. El servidor es seguro, pero tenerlo así en texto plano me molesta.

Intenté en algún momento usar tiendas seguras para cifrar / descifrar el nombre de usuario y la contraseña, pero las tiendas están protegidas por una contraseña, ¿dónde las almaceno? Estoy de vuelta a la plaza uno.

Entonces? ¿Cuál es la mejor manera de almacenar el nombre de usuario / las contraseñas para conectarse a otros sistemas (base de datos, servicio web, etc.)?

    
pregunta johnD 01.11.2012 - 18:40
fuente

2 respuestas

13

El servidor debe poder acceder a algunos recursos R. Si un atacante tiene el control total del servidor, este puede acceder por definición a cualquier recurso al que pueda acceder el servidor. No hay absolutamente nada que puedas hacer al respecto excepto proteger el servidor.

Si el atacante no tiene el control total del servidor, pero tiene acceso al sistema de archivos del servidor, la pregunta es si el servidor necesita iniciarse de forma autónoma (sin ayuda externa). Si el servidor necesita iniciarse de forma autónoma, todos los datos necesarios para acceder al recurso R deben residir en algún lugar del sistema de archivos del servidor y, por lo tanto, están disponibles para el atacante. Lo mejor que puedes hacer es tratar de ofuscar la contraseña, buena suerte con eso.

Si el servidor puede usar la ayuda externa para iniciar, entonces la mejor opción sería requerir que un administrador ingrese la contraseña durante el inicio (y mantenga la contraseña almacenada en la RAM). Si esa no es una opción práctica (por lo general no lo es), puede asegurar la contraseña con un token USB (por ejemplo, almacenar una contraseña encriptada y usar el token USB para descifrarla).

TL; DR: Suponiendo que no pueda ingresar la contraseña manualmente cada vez que inicie el servidor, no hay mucho que pueda hacer excepto proteger el servidor en sí.

    
respondido por el David Wachtfogel 01.11.2012 - 23:05
fuente
-3

Las respuestas sobre el cifrado no son incorrectas, pero el enfoque es incorrecto. Usted no debe cifrar. Usted debe utilizar una función hash de una manera. Esto significa que realiza una operación matemática NO reversible en la contraseña y almacena el resultado.

Cuando alguien quiere iniciar sesión, vuelve a realizar la operación con la contraseña que proporciona y lo compara con el resultado registrado.

CARGAS más detalles aquí.

enlace

    
respondido por el Toy Trumpet 09.08.2015 - 21:23
fuente

Lea otras preguntas en las etiquetas