Si necesita iniciar sesión en una cuenta extranjera de otra persona, necesita su nombre de usuario y contraseña. No hay manera de evitar eso. No puede hacer hash o cifrar 1 , necesita los valores simples.
Por supuesto que es una pesadilla, ya que los usuarios necesitan revelar sus credenciales a usted. Ellos confían en que no los estás abusando. Suponiendo que no está abusando de ellos intencionalmente (como venderlos en el mercado negro como parte de su modelo de negocio), debe evitar fugas. Eso incluye infracciones de datos en su infraestructura o administradores de base de datos que pueden acceder a ellos. Por lo tanto, la mejor práctica aquí sería no almacenarlas en absoluto . El negocio de su empresa es ayudar al usuario a completar formularios, no a proporcionar un servicio de administrador de contraseñas. Para " facilitar a los [usuarios] recordar " sus credenciales no son su trabajo.
Una solución podría ser escribir una extensión de navegador para que los usuarios la instalen. Ellos inician sesión en esas cuentas extranjeras, en su máquina, y su complemento hace su trabajo allí. Su servidor nunca entra en contacto con las credenciales. (Por supuesto, el usuario todavía debe confiar en la extensión para no espiarlos).
Si esa no es una opción y el trabajo, incluido el inicio de sesión, debe realizarse en su servidor, entonces no debe almacenar las credenciales del usuario. Simplemente reenvíelas al servicio de inicio de sesión extranjero y luego almacene solo el token de sesión que se utilizará con la API en su base de datos durante el tiempo que lo necesite. Si la base de datos está dañada, el atacante podría secuestrar las sesiones (lo que es peor), pero no obtiene la contraseña de texto simple. Haga que el usuario vuelva a proporcionar las credenciales si su servidor necesita iniciar sesión varias veces.
1: Por supuesto, debería cifrar siempre los datos confidenciales cuando los almacena en cualquier lugar, pero en última instancia, la clave debe residir en algún lugar de su servidor, a la que un presunto atacante podría acceder. acceso también.