Tengo este problema:
- La aplicación de mi consola necesita conectarse a un servidor. Sin embargo, el servidor requiere contraseñas en texto sin formato por HTTP POST para iniciar sesión. La conexión es HTTPS.
- La aplicación solo se llama de vez en cuando, pero no se ejecuta de forma permanente.
Ahora, no quiero que el usuario ingrese su contraseña para cada ejecución de la aplicación. Mi idea fue:
- Cuando el usuario inicia la aplicación por primera vez, se le solicita una contraseña. Se está iniciando un nuevo deamon (es decir, un programa ejecutado por el usuario, que puede ejecutarse por varias semanas), y la contraseña ingresada se pasa directamente al deamon.
- Para iniciar sesión en la página de inicio, la aplicación solo le dice al demonio "iniciar sesión". El demonio, que tiene la contraseña en la RAM, llama a wget para iniciar sesión en el sitio web [1].
Mi principal preocupación es que el demonio tiene la contraseña en la memoria RAM. ¿Qué peligros podrían surgir de esto?
Veo tres riesgos:
- Alguien podría acceder a la memoria RAM. Probablemente obligando a su computadora a intercambiarla, luego presionando el botón de encendido y luego investigando su disco duro. Es posible, pero probablemente no sea efectivo.
- El demonio podría usar archivos temporales para almacenar su memoria. Probablemente cierto para el bash? Sin embargo, si escribo un programa en C, esto no debería ser posible?
- Alguien podría usar un script que diga "Hola demonio, soy wget / internet, dame la contraseña". Mientras llamo "/ usr / bin / wget", y mientras el usuario no sea root, creo que no será posible?
¿Algún otro problema?
Notas:
[1] wget obtiene la contraseña a través de un archivo, por lo que la contraseña no está en la tabla ps
. El archivo lo construiría el demonio con derechos de lectura solo para el usuario y se eliminaría después del inicio de sesión.