2010-05-23 19 views
5

Attualmente ho un sito Web che consente ai miei visitatori di accedere tramite un semplice script che ho incollato e scritto. Attualmente utilizzo solo le sessioni per mantenere i visitatori registrati. Ci sono dei vantaggi nell'aggiungere cookie al mio sito Web per memorizzare lo stato di accesso dell'utente?Sessioni e cookie

Oppure c'è un modo migliore del tutto?

utilizzando PHP

+0

Penso che non ci sia altro modo ... se si desidera memorizzare lo stato di accesso dell'utente, si dovrà utilizzare i cookie. – Cristian

+0

@Cristian: No .... non hai * a *, ma l'altra soluzione è piuttosto brutta. (passalo nell'URL) – mpen

risposta

3

@Riroiro Gonzalez Maciel ha detto di aver realizzato quella sceneggiatura, non ha bisogno di quadri da prendere come esempio. I framework di solito contengono script ben posizionati.

Per rispondere a questa domanda:

Io di solito negozio in cookie di alcune stringhe MD5 che vengono combinati dal suo MD5 (password) e il suo nome utente in modo saprò prossima Tim entra il mio sito web che è stato registrato in modo non vorrei farlo di nuovo il login

il mio esempio:

<?php 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    // sql and escape stuff witch will return 1 if he has entered a valid login 
    if($sqlreturn == 1){ 
     // do login 
     $wraplogin = md5($username."-".md5($password)."-".SECRET_KEY); // I always define a define('SECRET_KEY', 'mysecretkey'); in global file. 
     // now you can store that $wraplogin in cookies and remember his login. Next time he enters the website, you read that cookie, compare it with what you have in your database and let him in. 
    } 
?>

Ora so che non è l'esempio migliore, ma ho personalmente usato in grandi siti web (> 500.000 utenti) e nessuno ha violato ancora :)

Questo è il vantaggio nei cookie per la parte di accesso.

Buona fortuna.

+0

Qualsiasi reale necessità di inserire la password nell'hash md5? Sto pensando a un altro bit casuale di dati, forse il timestamp di registrazione degli utenti sarebbe migliore. So che una corda lunga non potrebbe mai essere forzata brutale, ma solo per essere al sicuro dalla paranoica. A proposito di ciò che ho scoperto, il vantaggio dei cookie è che puoi impostarli per mantenere l'accesso dell'utente per XX giorni. – Derek

+0

sì, principalmente è possibile impostare qualsiasi cosa in quel cookie di accesso, IP utente ecc. Ho aggiunto la password per rendere quella stringa un po 'più complessa, ma come ho detto, puoi mettere tutto :) tutto ciò che può essere verificato dopo. –

4

Se si utilizzano sessioni PHP, si utilizzano i cookie. PHP memorizza l'ID di sessione nei cookie e i dati di sessione in un file sul disco sul server web.

1

I framework web (Java Servlets e altri) di solito utilizzano i cookie per identificare le sessioni; l'altra opzione usuale sono i parametri URL. Quindi, supponendo che tu stia utilizzando qualsiasi framework web, probabilmente sta già usando i cookie per memorizzare l'id della sessione. Web Framework utilizzerà questo ID per identificare l'oggetto Session in ogni richiesta. Sebbene i cookie sopravvivano al riavvio del server, dal momento che sono memorizzati nel browser, gli oggetti di sessione di solito non funzionano a meno che non sia stata configurata la persistenza della sessione.

Se si desidera che gli utenti eseguano il "login automatico" come nella consueta opzione "ricordami" di molti siti Web, è necessario mantenere gli oggetti Session se il framework lo prevede. Oppure implementare un sistema simile, utilizzando i cookie per memorizzare un "token registrato" e controllando tale token quando l'utente accede al sistema per registrarli automaticamente o inviarli a una pagina di accesso. (Modifica: come Mihai propone in un'altra risposta)

Se si desidera implementare il proprio metodo, suggerisco di verificare come i famosi framework Web implementano questo, in particolare gli aspetti relativi alla sicurezza e alla privacy della memorizzazione dei dati utente nei cookie.