Ho bisogno di fare alcune crittografie nella zona privata del mio sito web e voglio bcrypt
della password dell'utente.
È sicuro memorizzare la password nella sessione quando l'utente effettua il login, in modo che possa usarlo in seguito?
Ho bisogno di fare alcune crittografie nella zona privata del mio sito web e voglio bcrypt
della password dell'utente.
È sicuro memorizzare la password nella sessione quando l'utente effettua il login, in modo che possa usarlo in seguito?
Non memorizzare la password nelle variabili di sessione. Invece, utilizzare una chiave surrogata.
Ad esempio:
Quando l'utente esegue il login, fai quanto segue:
Se un utente malintenzionato ottiene l'accesso in lettura ai dati della sessione memorizzati nella directory /tmp
, potrebbe estrarre le chiavi surrogate. Tuttavia, non saranno in grado di ottenere la password dell'utente. Anche se questo non protegge i dati che stai crittografando sul server, impedisce l'accesso non autorizzato all'account dell'utente e impedisce all'utente malintenzionato di sfruttare casi in cui l'utente ha utilizzato la stessa password altrove.
Se vuoi usare PHP in modo sicuro, dovresti avere installata la patch per PHP di Suoshin Hardened . (Qualsiasi società di hosting che valga la pena occupare avrà già sui loro server). Questa patch include funzionalità che crittografa automaticamente i dati della sessione, il che dovrebbe essere sufficiente per proteggerti da determinati tipi di attacco.
Ma gli hack delle sessioni sono solo uno degli strumenti degli hacker e le password sono un obiettivo primario, quindi non dovrebbero essere trattati come qualcosa a cui il programma dovrebbe aggrapparsi (anche in memoria) per un qualsiasi periodo di tempo; una password deve essere cancellata il prima possibile dopo l'input e la stringa della password stessa viene immediatamente cancellata.
Quindi la mia risposta alla tua domanda sarebbe no, non dovresti prendere in considerazione di tenere una password per riutilizzarla in seguito.
Leggi altre domande sui tag encryption passwords session-management