2009-10-01 31 views

Respuesta

13

recomiendo uno de los tres enfoques:

  • Evite guardar la contraseña en absoluto mediante el uso de tokens de autenticación. En este modelo, el usuario inicia sesión una vez y el servidor genera un token único, grande y escaso que el cliente puede almacenar y usar como su "contraseña" de inicio de sesión. El servidor solo acepta este token de un cliente a la vez, por lo que si dos clientes intentan usarlo simultáneamente, el token se invalida. El token generalmente también se invalida después de un período de tiempo (1 semana, 2 semanas, un año, lo que sea apropiado). Cuando el token se invalida, el usuario debe iniciar sesión nuevamente a mano y el proceso se repite. Este es básicamente el enfoque de Gmail y otros inicios de sesión similares en el sitio web.

  • Si debe almacenar la contraseña, le recomiendo confiar en que el sistema operativo la administre. Windows y Mac tienen buenos sistemas de almacenamiento seguros (DPAPI y Keychain, respectivamente). Sin embargo, Linux no tiene una buena solución siempre disponible, por lo que depende de su mercado. La ventaja de utilizar el sistema operativo es que el sistema operativo puede proporcionar protecciones que usted mismo no puede proporcionar, y el usuario puede administrar de forma centralizada la protección general del almacenamiento del sistema operativo (usando tarjetas inteligentes, etc.) a un nivel que probablemente no reproducirá. Las tiendas seguras de OS también suelen ser bastante convenientes para el usuario.

  • Si ninguna de estas son opciones, guarde un archivo cifrado con una contraseña maestra que el usuario debe ingresar cada vez que inicie su aplicación. Así es como funciona Firefox (o al menos lo hizo la última vez que miré, que ha sido un tiempo). Esto es razonablemente seguro, pero mucho menos conveniente para el usuario (y la baja conveniencia a menudo significa baja adopción por parte de los usuarios, o uso deficiente a través de contraseñas más simples, etc.). Investigaría el código de Firefox como un ejemplo de cómo implementar esto.

+0

¿Cuáles son algunas soluciones posibles si está utilizando Linux como su sistema operativo? – artgon

+1

@artgon, recuerde que la primera regla de un almacenamiento seguro de contraseñas es que el usuario debe eventualmente autenticarse escribiendo una contraseña o presentando un token. Si encuentra una solución que no lo requiere, entonces ha encontrado una solución insegura. Dicho eso, las cosas que se deben mirar son GNOME Keyring, pwsafe y keystorage.net (para mono). De ellos, probablemente comenzaría con GNOME Keyring. –

+0

Gracias por esta gran respuesta @RobNapier Una pregunta: ¿cómo podemos verificar si dos clientes están tratando de usar un token al mismo tiempo? –

1

La mejor manera sería confiar en otra persona para almacenarlos y confiar en esa parte en su lugar. Pero si debe tener el control, le sugiero que lea un buen libro sobre sistemas seguros y luego piense de nuevo. Hay muchas variables a considerar y la mayoría de las veces solo mitiga el riesgo versus el costo.

0

KeePass proporciona incluso un API para utilizar para los desarrolladores.

+0

Código de ejemplo ...? –

Cuestiones relacionadas