Sto sviluppando un sistema di accesso e autenticazione per un nuovo sito PHP e sto leggendo i vari attacchi e vulnerabilità. Tuttavia, è un po 'confuso, quindi voglio verificare che il mio approccio abbia senso.Sviluppo di una strategia di accesso e autenticazione PHP sicura
Ho intenzione di memorizzare i seguenti dati:
Nella sessione: user-id, hash + salata
HTTP_USER_AGENT
Nel biscotto e nel database: Token casuale , hash + identificatore salato
Su ogni pagina, I intenzione di fare quanto segue:
Se esiste una sessione, l'autenticazione tramite questo. Verificare che lo
HTTP_USER_AGENT
corrisponda a quello nella sessione memorizzata.Se non esiste alcuna sessione, utilizzare il cookie per l'autenticazione. Verificare che il token e l'identificativo nel cookie corrispondano a quelli nel database.
Se il cookie non è valido o non esiste, chiedere all'utente di accedere.
Ci sono evidenti difetti in questo? Finché imposto un timeout nel cookie, dovrei essere abbastanza sicuro, giusto? C'è qualcosa che mi manca?
Molte grazie in anticipo.
anche prendere in considerazione l'uso di un sistema di token una volta per azioni critiche ... – TheHippo
Esatto, la memorizzazione dell'ID di sessione nel database è un grosso errore. Memorizzando l'ID di sessione nel database si rende l'iniezione di SQL sul sistema molto più preziosa. Devi presumere che il tuo sistema si scontrerà e che devi avere un piano d'azione per gestire la violazione. Questo è il motivo per cui le password sono archiviate come hash. Ancora più php viene fornito con un gestore di sessione, se reinventi il wheal ti assicuro che sarà meno sicuro. – rook
Anche qui c'è molta buona lettura: http://stackoverflow.com/questions/549/the-definitive-guide-to-website-authentication-beta#477579 –