Un modo più sicuro? Usa https insieme a questo. Ci sono due vulnerabilità qui:
- Quando l'utente effettua il login, la password che viene inviata può essere facilmente letta da chiunque curiosetta sulla tua connessione. Questo non può accadere su una connessione https.
- Se un utente ha già effettuato l'accesso, qualcuno che ficca la tua connessione può semplicemente copiare i cookie di sessione. In HTTPS, i cookie vengono trasmessi in modo sicuro, quindi non c'è molto di un problema.
Potresti anche voler registrare l'indirizzo IP dell'utente e non lasciarli scambiare, anche se questo può essere fastidioso (per un utente come me che è dietro un proxy universitario con IP esterni in rotazione, non sarò mai in grado di accedere ).
Un'ultima osservazione: non utilizzare GET per il bit di logout. Cerca di non utilizzare GET per qualsiasi cosa che attiva una modifica: va bene per la navigazione, ma non per qualcosa che porterà a qualcosa di diverso sul server (un logout o qualsiasi cosa che scrive in un database). Vedi l'uso prescritto di GET e POST per ulteriori dettagli .
Se implementi quanto sopra, assicurati anche che il referrer di una richiesta POST sia il tuo sito e non qualche altro sito. (Questo, insieme a quanto sopra, aiuterà a prevenire gli attacchi CSRF ).
Per impedire clickjacking , disabilita l'inquadratura tramite javascript e l'intestazione X-Frame-Options: deny
.