Newsgroup: it.comp.www.php
Titolo: cookie, sessioni e sicurezza

Problema.
Voglio registrare gli accessi di utente e password sul client.
Ho provato a registrare l'ID dell'utente in un cookie.
Quando questo viene aperto crea una variabile di sessione con tutti i dati
presi da db.
MA
se io tarocco il cookie e scrivo un altro ID ( poniamo invece di 23 scrivo
1) mi ritrovo con la richiesta senza verifica al db con quell'ID.
A questo punto prende baracca e burattini dell'utente 1 (magari
l'amministratore) e fa un po' quel che gli pare.
Se cripto un pochino l'ID untente con base64_encode forse č meglio, ma
criptare sul serio non si puň.
Infatti il campo del db č l'ID auto_increment, quindi non puň essere ad
esempio la stringa md5-
Cha fare??
Grazie.
Marcello

Ho provato a registrare l'ID dell'utente in un cookie.
registra l'ID utente in una variabile di sessione sul server, così sei
sicuro che non venga toccata; non capisco perché li vuoi registrare
sul client anziché sul server.
Francesco

 ha scritto nel messaggio
news:ooircvgjk6pa03341...@4ax.com...

Ho capito, ma come faccio ad evitare il login dell'utente ad ogni sessione
(che è un po' una seccatura?)
Marcello

(che è un po' una seccatura?)
C'è qualcosa da impostare nel php.ini e c'è anche una funzione che
permette di impostare la durata del cookie, però io non ne so molto,
chiediamo lumi agli esperti del newsgroup.
Francesco

 chiediamo lumi agli esperti del newsgroup.
Io ho avuto non pochi problemi con sessioni+IE.
Il mio problema era analogo, e usavo una var di sessione dove registravo
tutto quello che mi serviva per l'utente. Il cookie sul client contiene
il PHPSESSID e quindi non hai i problemi di sicurezza di cui hai parlato
(in realta' ad esser pignoli non e' proprio sicuro al massimo).
Nel caso vuoi far durare la sessione di piu' di "una sessione", cioe' se
l'utente chiude il browser non la vuoi far scadere, registri un cookie a
nome PHPSESSID.
In teoria funziona, in pratica funge solo con netscape/mozilla.
Perche'? boh...
Pare che IE tenda *comunque* ad eliminare il cookie della sessione dopo
tot minuti (pare siano 20, almeno cosi' mi sembra di aver notato), se
provi a modificare la cosa forzando col setcookie() i casini aumentano.
Questo con svariate versioni di IE, e non e' bello perche' se succede
mente stai facendo una dimostrazione per lavoro sono cazzi.
IE, il cookie di sessione, non lo salva su file come fa con altri cookie
normali...di conseguenza non si capisce bene dove lo tiene e cosa se ne
fa...
Ho risolto con un modo che potra' sembrare un po' barbaro ma che ha
risolto tutti i problemi ed ha introdotto una gestione di sessione
indipendente dal client in uso ma legata all'utente che e' piaciuta e
piace anche a me :)
In pratica leggo e scrivo i dati di sessione su db, registro sul client
un cookie con login e pass del db dell'utente (opportunamente crittato).
La cosa funziona bene perche' un utente che entra, fa le sue cose, esce,
si rilogga magari da casa, si ritrova esattamente con tutti i suoi bei
settaggi anche se usa un altro browser o computer.
Non credo cambiero' la cosa perche' funziona molto bene, ma ancora mi
sto facendo domande sul comportamento di IE (e non e' l'unico, a
volte fa girare un po' le....)...
Ciro.

Ciro ha scritto:
Ho risolto con un modo che potra' sembrare un po' barbaro ma che ha
risolto tutti i problemi ed ha introdotto una gestione di sessione
indipendente dal client in uso ma legata all'utente che e' piaciuta e
piace anche a me :)
In pratica leggo e scrivo i dati di sessione su db, registro sul client
un cookie con login e pass del db dell'utente (opportunamente crittato).
La cosa funziona bene perche' un utente che entra, fa le sue cose, esce,
si rilogga magari da casa, si ritrova esattamente con tutti i suoi bei
settaggi anche se usa un altro browser o computer.
_______________________________________________________________________
Si Ciro, mi sembra una buona soluzione.
Ma io ho bisogno che la sessione cambi sempre.
Nella tua soluzione io posso accedere all'hash di sessione? o solo alla
stringa utente+password?
Ciao Marcello

 alla stringa utente+password?
Non c'e' nessuna sessione. Ho abbandonato l'uso della sessione perche'
nel mio caso mi dava problemi con IE. finche' si tratta di una pagina
che va su internet me ne frega poco, ma se si tratta di un programma di
tipo gestionale/backoffice la cosa funzionava veramente male.
Tutti i dati della sessione vengono immagazzinati su una tabella, un
record per utente, quindi a partire dall'utente prelevo i dati della sua
sessione.
Poi in realta' ho differenziato per ogni utente varie sessioni a seconda
dell'area di lavoro che stavano utilizzando...
Ciro.

 mente stai facendo una dimostrazione per lavoro sono cazzi.
Con IE 6 i cookie scadono come previsto. Ad es. se metto 2 ore, per
2 ore ci sta! garantito! Secondo me stai sbagliando qualcosa. Guarda
l'elenco dei cookie dal browser e verifica se la scadenza e' impostata
come previsto.
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it

 l'amministratore) e fa un po' quel che gli pare.
Aggiungi come cookie un digest dei dati calcolato con una passphrase che
sai solo tu lato server e, quando ricevi il cookie, ricontrolla che
il digest corrisponda. Esempio:
Cookie1: "pippo, record 23"
Passphrase: "xyz"
Digest MD5 di "pippo, record 23xyz" = 05cc0901f8d472fd535929fe5408d2db
Invia al browser il digest come altro cookie.
Ripeti il calcolo quando il browser ti ritorna i dati.


 Invia al browser il digest come altro cookie.
Ottima soluzione, Umberto!
L'ho implementata, grazie.
Marcello