Recentemente sono entrato nelle sfide del codice, fatte dai miei amici, da me o da qualche altra fonte che ha a che fare con la sicurezza. Ora, ho il seguente scenario:
  <Login form>
       |
       |
[ Proccess login ] --> (Valid) --> [Create session in database]
       |                                        |
       |                                        |
       |                         [Encrypt session with a random key]
    (Invalid)                                   |
       |                                        |
       |                              <Encrypt and print key>
[Return to Login form]
Ora suggerisco all'utente di chiudere semplicemente il browser e torna a utilizzare l'app l'altro giorno.
  <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]            
Come puoi vedere, ho bisogno di crittografare quella chiave e far sì che l'utente la memorizzi. Il che significa:
- Basato su crittografia e decodifica tramite chiavi
- Solo una chiave privata
- Utilizzabile in ECMAScript e PHP
EDIT : penso di non averlo chiarito: non riesco a memorizzare la chiave. Quello che posso fare è questo:
[Generates key] --> [Encrypt common word] --> [Store encrypted word on database]
Quindi, quando l'utente tenta un tasto:
[Encrypt common word with the given key] --> <Same Result> --> Let user in
                 |
                 |
        <Different result> --> Die
C'è qualcosa che posso usare? Se sì, cosa?