First : Configurare la direttiva session.cookie_lifetime
, in php.ini, file di configurazione o tramite session_set_cookie_params()
.
Successivamente, memorizzare il nome utente e il valore hash della password nella sessione e convalidare tale accesso su ogni pagina. Finché è ancora valido, possono rimanere loggati.
La scadenza naturale del cookie di sessione dovrebbe in genere mantenere le cose in ordine, poiché non sarà possibile disconnettere nessuno nel mezzo della propria sessione (se le stelle sono allineate per questo, ovviamente) se lo mantengono attivo. In mancanza di questo, però, mi piacerebbe prendere in considerazione la soluzione di eCartoth un secondo vicino, come si può solo aggiungere una seconda linea per l'istruzione if:
if (my_validate_user_function($_SESSION['username'],$_SESSION['passhash'])
&& $_SESSION['deathstamp'] > time()
) {
// user is logged in again, oh boy!
}
else {
// send in the death robots
header('Location: /login.php',true,302);
}
EDIT: Una cosa che si potrebbe prendere in considerazione è la sessione di fissazione e/o sessione di dirottamento.Al fine di evitare che, io consiglierei di uno (o entrambi) di due soluzioni:
- negozio indirizzo IP dell'utente nella sessione
- uso
session_regenerate_id()
dopo ogni tentativo di accesso riuscito.
L'utilizzo di SESSIONS è l'unico modo per iniziare un buon sistema di sicurezza, +1 – TravisO
puoi esplicitare l'ultima modifica: perché memorizzare l'indirizzo IP dell'utente e rigenerare l'ID della sessione? – pixeline
PHP Accetta più meccanismi per specificare l'ID di sessione (es. Stringa di query), che consente a qualcuno di impostare un ID di sessione predeterminato, inviarlo tramite url a una vittima ignara e, una volta effettuato l'accesso, l'utente malintenzionato potrebbe utilizzare lo stesso ID di sessione per falsificare le credenziali di accesso dell'utente legittimo che sono memorizzate nella sessione. Memorizzando l'IP e/o rigenerando l'ID di sessione su ogni richiesta, l'ID di sessione "fissato" dell'utente malintenzionato è, in effetti, privo di valore. Leggi questo per ulteriori informazioni: http://en.wikipedia.org/wiki/Session_fixation – Dereleased