Hace poco me metí en los desafíos de código, hechos por mis amigos, yo mismo o alguna otra fuente que tiene que ver con la seguridad. Ahora, tengo el siguiente escenario:
<Login form>
|
|
[ Proccess login ] --> (Valid) --> [Create session in database]
| |
| |
| [Encrypt session with a random key]
(Invalid) |
| |
| <Encrypt and print key>
[Return to Login form]
Ahora sugiero que el usuario simplemente cierre su navegador y vuelva a usar la aplicación el otro día.
<Login form>
|
|
[ Proccess login ] --> (Valid) --> [Detect that the user already has a session]
| |
| |
| <Ask user for the key>
(Invalid) |
| |
| (Right key) <-----> (Wrong key)
[Return to Login form] {Let the user in the app} [Die]
Como puede ver, necesito cifrar esa clave y hacer que el usuario la memorice. Lo que significa:
- Basado en el cifrado y descifrado por claves
- Sólo una clave privada
- Utilizable en ECMAScript y PHP
EDIT : creo que no lo dejé en claro: no puedo guardar la clave. Lo que puedo hacer es esto:
[Generates key] --> [Encrypt common word] --> [Store encrypted word on database]
Entonces, cuando el usuario intenta una clave:
[Encrypt common word with the given key] --> <Same Result> --> Let user in
|
|
<Different result> --> Die
¿Hay algo que pueda usar? Si es así, ¿qué?