Quali sono le migliori pratiche per l'autenticazione web basata su cookie?

11

Sto lavorando su un piccolo progetto parallelo utilizzando CGI e Python (la scalabilità non è un problema e deve essere un sistema MOLTO semplice.)

Stavo pensando di implementare l'autenticazione utilizzando i cookie e mi chiedevo se esistessero best practice consolidate.

Quando l'utente si autentica con successo, voglio usare i cookie per capire chi è connesso. Che cosa, secondo le migliori pratiche, dovrebbe essere memorizzato in un tale cookie?

    
posta rdasxy 12.11.2011 - 09:08
fonte

2 risposte

12

Caso migliore: un ID singolo che si riferisce a tutte le altre informazioni necessarie, che a loro volta sono memorizzate in un database.

Ci sono momenti in cui ha senso inserire qualche altra informazione, ma sono rari. Devi sempre chiederti perché, almeno cinque volte .

SSL proteggerà i tuoi utenti dal dirottamento di sessione ma, anche in quel caso, non memorizzerà mai informazioni sensibili non crittografate in un cookie. È, in sostanza, memorizzato in testo normale su hard disk.

Infine, e soprattutto, proteggi il tuo utente dagli attacchi XSS e CSRF .

La protezione XSS è generalmente semplice come fare attenzione dove si include Javascript, perché Javascript su un altro server potrebbe essere modificato senza che tu lo sappia, e questo Javascript ha accesso ai dati dei cookie. Pertanto, se stai utilizzando la rete di distribuzione dei contenuti di Evil Corp per pubblicare il tuo script jQuery, possono aggiungere improvvisamente del codice per inviare loro i cookie degli utenti. Non lo sapresti; i tuoi utenti non lo saprebbero.

Puoi scaricare script e servirli dal tuo server o utilizzare CDN molto affidabili come Google o Yahoo.

La protezione CSRF viene solitamente eseguita avendo un valore casuale in un campo nascosto in un modulo. Il valore viene mantenuto nella sessione in modo che quando il modulo viene nuovamente inviato, è possibile verificare che provenga dallo stesso computer.

La maggior parte dei framework web ora dispone di tecniche molto semplici per includere quel token.

    
risposta data 12.11.2011 - 16:44
fonte
3
  • Utilizza secure e httpOnly flag.
  • Codifica i dati del cookie di sessione e firma crittograficamente i dati codificati con un MAC. Controlla la firma sul server ogni volta, prima di preoccuparti di decodificare i dati del cookie di sessione. (Rails lo fa per impostazione predefinita.)
risposta data 12.11.2011 - 20:28
fonte

Leggi altre domande sui tag