Hice un sistema de inicio de sesión . El usuario puede iniciar sesión por:
- usando un correo electrónico / contraseña normal (cifrado).
- utilizando un servicio como facebook, gmail, etc.
Hasta ahora todo bien. Ahora quiero almacenar información confidencial (credenciales ftp) en la base de datos de manera segura. Esto es muy fácil para los primeros usuarios: cuando el usuario inicia sesión con su correo electrónico / contraseña, la contraseña se revisa con un sal (predeterminado) para verificar la autenticación, y con otro sal para obtener un hash fuerte X.
Luego uso este hash X como contraseña para cifrar los datos confidenciales que el usuario desea almacenar. De esta manera, el acceso completo al código y la base de datos NO compromete los datos del usuario. *
¿Hay alguna manera de lograr un nivel de seguridad similar para los usuarios que inician sesión con un servicio que, inherentemente, no tienen una contraseña para empezar? Muy recomendable una molestia del lado del servidor y no agregar complejidad adicional para el usuario. Estas son todas las opciones que puedo ver con sus problemas:
-
Requieren que cada usuario, incluso Facebook / Gmail / etc, escriba y recuerde una contraseña. Este es, de nuevo, el principio que me hizo integrar esos servicios en primer lugar.
-
Use una contraseña de cifrado única para todo el servidor. Quiero protegerme contra el acceso completo al código y la base de datos, por lo que nadie (incluidos los desarrolladores / administradores / etc) puede acceder a estos datos privados.
-
Usa algunos datos específicos del usuario. Esta sería la identificación del usuario de Facebook, por ejemplo. Se puede recuperar simplemente haciendo una búsqueda de su correo electrónico en fb, por lo tanto no es seguro.