Che cosa impedisce alle persone di modificare i cookie per cambiare con chi hanno effettuato l'accesso?

2

Sto sviluppando un social network e, per quanto ne so, il modo migliore per archiviare tra le pagine su cui l'utente è connesso sta usando i cookie. Quindi, supponiamo che io stia memorizzando un cookie dell'ID utente che ha effettuato l'accesso.

Ad ogni modo, cosa impedisce all'utente di modificare il valore del cookie per ingannare il sito web nel pensare di aver effettuato l'accesso come qualcun altro?

    
posta Jacob Garby 07.06.2017 - 21:01
fonte

3 risposte

7

So, suppose I'm storing a cookie of the user ID which is logged in.

Questo non è il modo in cui funzionano i cookie di sessione. Il cookie non deve contenere solo l'ID dell'utente corrente poiché ciò consentirebbe ovviamente a un utente malintenzionato di manomettere il valore.

Invece, un approccio comune è che l'applicazione Web emette un ID di sessione casuale sufficientemente lungo per l'utente e associa internamente questo ID di sessione con l'account utente effettivo. Poiché a ogni utente viene assegnato un nuovo ID di sessione dopo ogni accesso, non sarà possibile prevedere gli ID di sessione di altri utenti o manipolare i valori specifici dell'utente modificando il cookie.

In generale, non dovresti inventare il tuo schema di gestione delle sessioni. Se pensi a come memorizzare un ID utente in un cookie, probabilmente stai sbagliando. Molti framework forniscono già delle astrazioni per le sessioni basate sui cookie. Ad esempio, PHP ha il supporto integrato per gestione delle sessioni . Dai anche un'occhiata al Session Management Cheat Sheet di OWASP per informazioni sulle considerazioni sulla sicurezza.

    
risposta data 07.06.2017 - 21:15
fonte
2

È possibile memorizzare le informazioni nei cookie e impedire agli utenti di manomettere i dati contenuti nei cookie. Il modo per farlo è creare un HMAC del valore del cookie e memorizzarlo insieme al cookie. Quindi, ogni volta che ricevi un valore di cookie, controlla se ha l'HMAC corretto. Poiché gli HMAC hanno bisogno di una chiave segreta per creare il solo server, sai per certo che il valore del cookie è stato creato dal server.

Alcuni framework hanno questo incorporato ( expressjs , http://blog.bigbinary.com/2013/03/19/cookies-on-rails.html rotaie ). Questa domanda illustra il concetto di cookie firmati ancora.

    
risposta data 08.06.2017 - 10:12
fonte
0

Se si autentica un utente in base a un cookie in testo semplice con un nome utente, non è possibile garantire che chiunque abbia il cookie sia la persona che dichiara di essere. Chiunque può creare un cookie con qualunque nome utente vogliano. Spetta a te assicurarti di essere quello che dicono di essere.

Se conoscessi il nome utente di qualcuno, potrei creare un cookie con il loro nome utente e ignorare il login dell'applicazione ed essere chiunque io volessi essere se non ci fossero controlli sul lato server.

Invece di autenticare un utente che utilizza un cookie, suggerirei di utilizzare una sessione lato server e passare un identificatore di questa sessione all'utente per archiviare come cookie. Quindi, quando richiedono la tua pagina, puoi identificare chi sta usando le loro variabili di sessione sul lato server. Il problema con questo metodo è se l'identificatore di sessione è facilmente ipotizzabile che la sessione di un altro utente potrebbe essere dirottata, ma almeno in questo caso la sessione potrebbe essere cancellata sul server.

    
risposta data 07.06.2017 - 21:15
fonte

Leggi altre domande sui tag