Sì, alla fine essere "loggato" equivale ad aver impostato una variabile di sessione. Quindi la tua domanda dipende fondamentalmente dalla sicurezza della sessione. Ecco un paio di cose che potresti voler controllare e / o prendere in considerazione:
- Utilizza i cookie per gli ID di sessione, la condivisione dei link non porterà al dirottamento di sessione.
- Utilizza idealmente HTTPS, in modo che le sessioni non possano essere facilmente dirottate in ambienti Wi-Fi aperti.
- Assicurati che le falsificazioni delle richieste su più siti non funzionino sui tuoi siti.
- Assicurati di non essere vulnerabile a attacchi di scripting cross-site , o almeno fai uso della% attributo
HttpOnly
di cookie.
- Assicurati che gli ID di sessione non siano prevedibili e non possano essere corretti su valori predefiniti dall'utente
- Assicurati che i tuoi dati di sessione non siano (facilmente) accessibili agli altri. Ad esempio, negli ambienti di hosting virtuali potrebbe essere facile per gli altri leggere o persino manipolare i dati della sessione, che di solito è un semplice file all'interno di
/tmp
.
Ovviamente questa non è una lista completa, piuttosto alcune cose che mi sono venute in mente.
one-way encode passwords in the database
Questo è ovvio! Ma la semplice codifica unidirezionale (cioè l'hashing) non è sufficiente in questi giorni. Cerca nelle funzioni di derivazione delle chiavi reali, ad es. PBKDF2 e bcrypt . Questi sono progettati per rallentare drasticamente gli attacchi di forza bruta.
Use the database instead of sessions.
Che cosa intendi con questo? Il database non sa nulla di HTTP.
Use JavaScript to validate that the user is using a browser.
Non può essere fatto.
Lock an account after 5 login fails.
Sebbene sia un'idea nobile, è completamente poco pratica per la maggior parte dei siti. Cosa fai con gli account bloccati? Hai intenzione di offrire supporto telefonico? Come si autenticano gli utenti al telefono? Quello che potresti pensare è un timeout, che renderebbe impossibile agli hacker persino provare a usare password brute force.