Domanda

Sto lavorando su un sito web e si desidera creare un login e di una sessione.Che cosa è il modo più sicuro per verificare se la sessione esiste o non esiste (come il cookie di sessione o variabile di controllo), o un'idea migliore, quindi, utilizzando le sessioni in php?

È stato utile?

Soluzione

session_id() restituisce l'id di sessione per sessione corrente o la stringa vuota ("") se non c'è la sessione corrente e non corrente id di sessione esiste).

http://de.php.net/manual/en/function.session-id.php

ma che dice solo che se una sessione è attiva o meno.

la maggior parte del tempo, ho appena chiamata session_start(); all'inizio di ogni script (anche se l'utente non è loggato).al login, ho impostato $_SESSION['user'] con l'id utente o un oggetto utente.su logout, ho appena unset($_SESSION['user']);.controllando empty($_SESSION['user']) posso controllare se qualcuno ancora connessi o meno.non fare questo se si memorizza utente-dipendente di informazioni altrove, nella sessione, altrimenti il ragazzo successivo login possono ottenere le informazioni si suppone che non vedi (in questo caso uso session_destroy();).

ma la sicurezza?basta disattivare l'id di sessione di propagazione da GET/POST url riscrive (i cookies solo), in modo che non finiscano in un Url che può essere memorizzato nella cache o distribuito a terzi (in questo caso, il dirottamento di sessione sarebbe possibile).è possibile farlo impostando session.use_only_cookies nel php.ini.

ci possono essere ulteriori problemi di sicurezza se sei in hosting su un non attendibili e/o non correttamente configurato un server condiviso - che potrebbe portare ad altre persone sulla stessa macchina leggendo i vostri dati di sessione.in questo caso è possibile memorizzare i dati della sessione in un database di riscrivere il gestore di sessione.basta cercare session handler mysql su intertubes, sono sicuro che ci sono abbastanza pronto ad andare, soluzioni.e non memorizzare le informazioni sensibili, come password di sessione, meglio fare una query ogni volta è necessario confrontare.

più che altro ...l'utilizzo di ssl/https per l'accesso e la gestione degli utenti, in modo che nessun testo in chiaro le password vengono trasferiti.memorizzare solo pw-hash con il sale nel database.non permettere a nessuno di vedere la password (che significa:non stampare in formato html o e-mail).non utilizzare auto_increment valori di id utente non può vedere (e quindi, immagino).ok, che è già fuori domande ambito.

Altri suggerimenti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top