Ho un problema con la comprensione di come si memorizzerebbe in modo sicuro un cookie con hash. E come effettivamente hash un cookie.
Questa è la situazione: Ogni visitatore (non utente, ma anche visitatore non registrato) del proprio sito Web riceve la propria "pagina segreta", lì può inserire informazioni "segrete". Il problema è che il visitatore ottiene questo senza la necessità di selezionare una password o qualcosa correlato. La chiave segreta viene generata automaticamente e memorizzata come cookie. Il problema: se il cookie viene compromesso, l'hacker può "falsificare" la propria chiave segreta cambiando la propria chiave, in quella dell'utente.
Pensavo di poter risolvere questo problema con:
- Generazione di una chiave univoca per ciascun utente
- Salva la versione con hash nel database
- Salva la versione hash nel cookie
- Quando visita il visitatore, controlla se il cookie hash corrisponde al valore del database
Problema: l'attaccante può ancora copiare solo l'hash del cookie. Perché dopotutto è solo testo normale e corrisponderebbe comunque al valore del database.
O utilizzando questo metodo:
- La chiave generata (A) viene crittografata usando per esempio AES con la chiave B. La stringa generata viene archiviata in un database.
- La chiave B viene memorizzata nel cookie; con ID visitatore
- Quando visita il visitatore, prendo il suo ID visitatore per sapere in quale riga nel mio database devo cercare, e se la chiave B decrittografa correttamente la "stringa", l'utente ha accesso alla chiave A per accedere alla chiave segreta.
Ma questo è esattamente lo stesso problema di cui sopra ...
Sto lottando con il fatto che oltre alla lunghezza una password rimane al sicuro finché l'utente mantiene il suo tumulo chiuso o il suo PC libero da malware. Ma poiché il cookie-rubare è così facile, ho bisogno di un altro meccanismo per i cookie.
Quindi, come posso proteggere i visitatori dal rubare i cookie in questa situazione? Non sto chiedendo bandiere come HttpOnly o qualcosa di simile, ma in realtà per un algoritmo / meccanismo / ... Devo solo assicurarmi che l'utente sia lo stesso utente delle sessioni precedenti. E qualcun altro non ha cambiato il suo cookie in quello dell'altro utente. Tutto questo senza alcuna interazione (mail, nome utente, password) del visitatore.