Quali sono alcune best practice per l'autenticazione web basata su cookie?


11

Sto lavorando a un piccolo progetto laterale usando 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 delle migliori pratiche stabilite.

Quando l'utente esegue l'autenticazione, desidero utilizzare i cookie per capire chi è connesso. Cosa, secondo le migliori pratiche, dovrebbe essere memorizzato in un cookie di questo tipo?

Risposte:


12

Caso migliore: un singolo ID relativo a tutte le altre informazioni necessarie, che a sua volta è memorizzato 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 della sessione ma, anche in questo caso, non memorizzerà mai informazioni sensibili non crittografate in un cookie. In sostanza, è memorizzato in testo semplice sul disco rigido.

Infine, e soprattutto, proteggere l'utente dagli attacchi XSS e CSRF .

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

Scarica gli script e servili dal tuo server o utilizza CDN molto affidabili come Google o Yahoo.

La protezione CSRF viene in genere 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 reinviato, è possibile verificare che provenga dallo stesso computer.

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


3
  • Utilizzare i flag securee httpOnly.
  • 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 dei cookie di sessione. (Rails lo fa per impostazione predefinita.)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.