Duplicar posibles:
PHP 2-way encryption: I need to store passwords that can be retrievedalmacenar de forma segura las contraseñas cuando el acceso al texto en claro todavía se necesita
Sé que la mejor práctica para el almacenamiento de contraseñas de usuario es almacenar solamente un hash irreversible de la contraseña.
Sin embargo, estoy desarrollando una aplicación en la que necesitaré almacenar la información de inicio de sesión de un usuario para otro servicio web; tendré que registrarlos periódicamente y realizar algunas tareas de mantenimiento. Desafortunadamente, el servicio no ofrece tokens de autorización, así que (muy aprensivamente) tengo que almacenar las contraseñas de manera que pueda acceder a sus valores de texto sin formato. No poseo ni controlo el servicio al que me estoy autenticando, y el único método es "tomar prestado" el nombre de usuario y la contraseña de un usuario y autenticar.
Estoy planeando AES_ENCRYPT las contraseñas en el DB, lo que significa que si alguien de alguna forma puede acceder al DB, no podrán obtener el texto plano. Sin embargo, mi código necesitará tener acceso a la clave para desencriptarlos, por lo tanto, si todo el servidor está comprometido, no hay protección y se revelarán las contraseñas.
Además del cifrado descrito anteriormente, ¿existen algunas mejores prácticas o pasos que puedo tomar para hacerlo de la manera más segura posible?
EDITAR
Yo sé que todo lo que hago, en última instancia, las contraseñas deben ser accesibles en texto plano y por lo que un servidor comprometido significa que las contraseñas serán revelados, pero me gustaría saber qué pasos puedo hacer para mitigar mi riesgo. P.EJ. encriptar el DB me protege en una situación donde el DB está comprometido pero no todo el servidor. Otros pasos mitigantes similares serían muy apreciados.
Guau ... ¡Esa es una situación muy desafortunada! – corsiKa
¿Qué sistema operativo? En Windows, hay API recomendadas para almacenar datos confidenciales. –
va a ser almacenado en una base de datos mysql, ejecutándose en un servidor CentOS, el código es python, lo ideal sería que algo dependiera únicamente de python/mysql, no del sistema operativo. –