¿Cómo debe almacenar una contraseña que debe recuperarse como texto sin formato? [duplicar]

3

He creado una API para un sitio que no proporciona ninguna forma de API. Para que la API haga algo con la cuenta, necesita el nombre de usuario y la contraseña en texto sin formato.

¿Cómo debo almacenar esta contraseña para que pueda proporcionarse a la API?

Debería estar disponible para mi servidor, que ejecuta un cronjob cada hora, es decir, que utiliza esta API.

Editar: Solo necesito guardar mi propia contraseña para este sitio.

    
pregunta Tyilo 17.11.2012 - 21:35
fuente

2 respuestas

4

Creo que no hay otra opción para almacenar su propia contraseña de usuario en texto sin formato. Si desea utilizar un cifrado, deberá almacenar la clave en algún lugar de su servidor para que su script de trabajo cron pueda acceder y verla. Debe guardar la contraseña sin formato, pero asegúrese de que la única persona que puede leer el archivo es la cuenta en la que se ejecuta el script. Este debe ser un usuario independiente sin shell, cuyo único propósito es ejecutar este script. De esa manera, los dos únicos usuarios que podrán leer el archivo son el usuario de script y el superusuario en la máquina.

    
respondido por el Lucas Kauffman 17.11.2012 - 21:57
fuente
5

¿Cómo almacenas la contraseña? Muy cuidadosamente .

En particular, sugiero usar una arquitectura especial:

  • Configure una máquina separada, que existirá solo para almacenar las contraseñas de texto simple. Debe endurecerse y cerrarse lo más apretadamente posible. Debe limitar el número de administradores con acceso a este servidor. Y este servidor debe ser usado solo para este propósito. Llamemos a esto el "servidor de inicio de sesión".

  • El servidor de inicio de sesión debe exportar una API simple, con algunas funciones: (a) agregar un nuevo par de nombre de usuario / contraseña para algún sitio web al almacén de contraseñas, y devolver un identificador que lo identifique de manera única; (b) inicie sesión en el sitio de terceros utilizando un par de nombre de usuario / contraseña en particular (según lo especifique su identificador), emita una solicitud en particular y envíe la respuesta; (c) elimine un par de nombre de usuario / contraseña en particular (como lo identifica su manejador). Las contraseñas deben almacenarse en el servidor de inicio de sesión (no en una base de datos compartida).

  • Observe que no hay API para exportar un par de nombre de usuario / contraseña desde el almacén de contraseñas. Eso es a propósito. El servidor de inicio de sesión debe actuar como un Hotel California para las contraseñas: las contraseñas entran, pero nunca salen.

  • El servidor de inicio de sesión debe mantener registros detallados de todos los usos de sus contraseñas. También es posible que desee tener un límite de velocidad (por ejemplo, notificar a un administrador si la tasa de uso excede algún umbral). Y es posible que desee tener un poco de recolección de basura, de modo que si no se usa un nombre de usuario / contraseña dentro de los 90 días, lo elimina del almacén de contraseñas, para limitar la cantidad de contraseñas antiguas almacenadas (se le puede solicitar al usuario que recuerde) ingrese su nombre de usuario / contraseña la próxima vez que inicien sesión).

Esta arquitectura aísla el aspecto más crítico para la seguridad en una pieza separada, el servidor de inicio de sesión, y trata de mantener su funcionalidad lo más simple posible, para que pueda minimizar las posibilidades de vulnerabilidades de seguridad que podrían permitir el acceso a las contraseñas de los usuarios. .

En segundo lugar, sugiero que planee realizar un nivel adicional de revisión y prueba de código, dada la naturaleza crítica del servidor de inicio de sesión:

  • Haga que un segundo desarrollador revise todo el código del servidor de inicio de sesión para verificar que no contenga vulnerabilidades de seguridad.

  • Considere la posibilidad de contratar a alguien para que realice una revisión de pentest o de código de seguridad del servidor de inicio de sesión.

Incluso si toma todos estos pasos, todavía está sujeto a cierto riesgo. No hay bala de plata. Si el servidor de inicio de sesión es hackeado, todas las contraseñas de sus usuarios serán reveladas, lo cual es muy malo. Por lo tanto, sea lo más cuidadoso que pueda.

    
respondido por el D.W. 18.11.2012 - 07:39
fuente

Lea otras preguntas en las etiquetas