Hashing cookie-values e prevenzione del furto di cookie

1

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:

  1. Generazione di una chiave univoca per ciascun utente
  2. Salva la versione con hash nel database
  3. Salva la versione hash nel cookie
  4. 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:

  1. La chiave generata (A) viene crittografata usando per esempio AES con la chiave B. La stringa generata viene archiviata in un database.
  2. La chiave B viene memorizzata nel cookie; con ID visitatore
  3. 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.

    
posta O'Niel 09.07.2016 - 02:38
fonte

1 risposta

2

Per semplificare la tua domanda:

  • Vuoi condividere alcuni segreti (ad esempio cookie hash o qualsiasi altra cosa) con l'utente.
  • Non è cosa avere alcun coinvolgimento dell'utente nella protezione del segreto, ovvero nessun accesso o altro.
  • Vuoi che questo sia salvato anche se il computer è stato violato.

Questo è impossibile. Se il computer viene violato, l'utente malintenzionato può fare tutto ciò che non richiede alcuna interazione specifica dell'utente (come l'immissione della password solo nota all'utente). Ciò significa che l'utente malintenzionato può accedere a questo segreto e può utilizzarlo. Potresti aggiungere alcune informazioni sul computer nel segreto (cioè IP sorgente, impronta digitale del browser ...) in modo che sia difficile usare il segreto da un altro computer, ma l'hacker può comunque utilizzare il segreto direttamente sul sistema delle vittime.

    
risposta data 09.07.2016 - 10:43
fonte

Leggi altre domande sui tag