Newsgroup: it.comp.www.php
Titolo: Gestione password dimenticata

Ciao, sto iniziando a sviluppare il sito web della azienda dove lavoro
utilizzando Apache+PHP+MySQL ... premessa per dire che se ho dei
dubbi/problemi come adesso ... chiedero` qui se non e` di troppo disturbo ;)
Ho gia` inserito la gestione della autenticazione degli utenti, compresa la
modifica dei dati di registrazione e il cambio della password.
Ma vorrei anche inserire la gestione della "password dimenticata".
Quale e` il metodo migliore? Mi spiego: su altri siti su cui sono registrato
ho visto che la cosa e` gestita in modi differenti. C'e` chi chiede dei dati
personali (nome, data di nascita, ecc...) o una domanda specifica, chi
chiede il nome utente e/o indirizzo di email ed invia una mail con la
password dimenticata oppure chi invia una mail generando pero` una nuova
password del tutto casuale. Magari ci sono anche altri metodi che adesso non
ricordo.
C'e` da tenere presente che nella mia tabella degli utenti ho inserito *non*
la password in chiaro, ma il suo MD5. Motivo per cui se un utente si scorda
la password ... non la posso sapere nemmero io che sono il webmaster del
sito. Quindi dovrei per forza far generare una nuova password.
Qualche consiglio?
Grazie.

sito. Quindi dovrei per forza far generare una nuova password.
Ti sei risposto da solo, devi generarne una nuova, sarą poi l'utente a
cambiarla se vuole.
Ciao
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Project Admin di "PHP Reservation - Online booking system" - 
http://phpreservation.sourceforge.net
Dev.Staff di E-Xoopport - 
http://dev.e-xoopport.it

> Ma vorrei anche inserire la gestione della "password dimenticata".
Innanzitutto gestendo la password in MD5, puoi solamente crearne una nuova.
Poi l'utente se la cambierà, se vuole.
L'unico tuo problema è come inviare la nuova password all'utente.
Secondo me il metodo della mail è molto efficace.
Tuttavia, potrebbe esserci un problema nel tuo caso.
Supponi che l'utente dimentichi la password.
Scrive il suo indirizzo email, tu cambi la password e gli mandi la mail con
la nuova password.
Ora, supponi che l'utente inserisca la mail di qualcun altro, per fare uno
scherzo. Tu vai a cambiare la password sbagliata e l'utente si arrabbia.
Molto meglio se fai una mail di conferma. Ossia prima invii una mail con la
comunicazione del cambio ed un link che punta allo script che effettua
veramente la modifica.
Così anche se viene fatto uno scherzo, l'utente non si trova la mail
cambiata.
Ciao
Marco

 Ciao
Si` e` vero ... avendo solo il MD5 della password posso soltanto generarne
un'altra!
La mia domanda era, in maniera generale, per capire quale e` il modo
migliore per gestire la "password scordata".
Guarda, ho fatto una prova su un sito italiano dedicato alla programmazione
su cui sono registrato. Mi chiede il nome utente oppure in alternativa
l'indirizzo di email con cui sono registrato. Mi ha inviato una mail con la
password attuale in chiaro. A questo punto mi chiedo: avranno messo sul db
le password in chiaro? Oppure le hanno criptate in modo reversibile (cioe`
non hanno certo usato MD5)? Ma cosi` non e` poco sicuro?
Comunque grazie x la risposta.

 ha scritto nel messaggio
news:cdg6rc$j3m$1...@newsreader.mailgate.org...

Il problema non si pone se la verifica della email avviene a monte, ovvero
all'atto della registrazione, viene chiesto di cliccare su un link per
attivare l'account, in quel caso l'email inserita appartiene necessariamente
a chi ha sottoscritto.
Cooper.

 veramente la modifica.
Direi che cosi` sarebbe piu` sicuro.


:Provate a guardare gli ingredienti del famoso Labello che si usa per
:le labbra screpolate: Butirrospermum Parkii (sperma di maiale).

 PRIMA di modificare la pass, sempre tramite la stessa email.
Ci ho pensato un po', dimmi se questa procedura va bene (come sicurezza):
(1) Chiedo all'utente il suo nome utente o in alternativa il suo indirizzo
di email registrato sul sito.
(2) Se l'utente o l'email corrisponde ad una registrazione valida, invio una
email all'indirizzo registrato con all'interno un link, per cosi' dire,
speciale in modo da creare la nuova password casuale.
Il dubbio ce l'ho sul link: cosa usare come parametri? Potrei mettere un
link del tipo:
http:<blabla>/creapassword.php?username=pippo&hash=dbba30862edf72a9e9e82fa1f34a91cc
dove hash e` il MD5 della password dimenticata (che ho ancora sul db).
Dovrei quindi essere sicuro che solo quell'utente ha avuto la possibilita'
di creare la password.
(3) Creo e memorizzo la nuova password casuale e la invio anche all'utente
tramite email.

 tramite email.
si certo tutto bello, ma se nel frattempo un utente ha cambiato la propria
email e non ha più accesso all'email di registrazione?
a me è successo su un paio di siti ed è veramente scocciante anche perchè il
più delle volte non posso ri registrarmi perchè i dati anagrafici sono già
nel db... morale? non uso più questi siti...
Una procedura via web e basta è l'unica procedura che merita di essere
studiata... inviare roba via email è da utilizzare il meno possibile, imho.
--
Ciao da
       --§Ska-Man§--
[
ska...@despamming.com
]
----------------
http://www.fantabasketpro.net
http://www.birraesalsiccia.net

 ... manda una mail al uèbmaster !
[cut]
Grazie per le tue risposte. Ho poi sviluppato la gestione della "password
dimenticata" proprio come avevo detto: chiedo il nome utente (solo quello
perche` basta), invio una email che avvisa del possibile cambiamento di
password e se l'utente clicca sul link presente nella email, viene creata
una password casuale di 8 caratteri che viene anche inviata subito via email
all'utente.
E cosi` funziona benone!
Se poi accadessero cose strane (errori, problemi, l'utente cambia la sua
email, l'utente si dimentica pure il suo username!, ecc...) basta scrivere
al uèbmaster (come dici tu), e cioe`, nel nostro caso, a me ;)
Ciao

 E cosi` funziona benone!
Hai perso la password?
-> Form richiesta e-mail/userid: 
-->se l'utente esiste NON resetti la password (altrimenti io resetterei il
tuo account, mi basta la tua email!), imposti un record in una tabella
"attivazioni" contenente un codice di attivazione e l'userid dell'utente.
prepari una email da spedire all'utente, con un link ad una tua pagina "per
la riattivazione dell'account".
-->rispondi all'utente "ti abbiamo mandato un'email" (non rispondere
"l'utente non esiste", con metodi brute force si può ricostruire l'utenza
del tuo sito e gli indirizzi e-mail utilizzati)
-->l'utente deve entrare nella pagina di riattivazione ed inserire userid e
codice di attivazione.
-->se i codici sono validi, permetti all'utente di reinserire la nuova
password.
Che ne pensate?

 Che ne pensate?
Mi pare bello.
Avevo già fatto una cosa del genere, il "codice attivazione" lo generavo 
a caso al momento e nella mail c'era già il link html che lo passava via 
GET. Questo per evitare che, una volta compreso il "meccanismo", 
qualcuno potesse usare artificiosamente lo script per il cambio password 
andandoci direttamente via browser modificando le pass degli altri.


 Che ne pensate?
Ad occhio mi sembra complicato ma sicuramente ha la sua efficacia. (io
comunque non sono espertissimo di queste cose!).
La mia gestione della "password dimenticata" nei dettagli l'ho fatta cosi`:
(a) Chiedo all'utente il suo username (potrei poi chiedere anche la email,
ma giusto solo per una maggior sicurezza).
(b) Se non esiste dico soltanto che c'e` stato un "errore durante
l'operazione: query fallita" (qualcosa devo pur dire, no?). Se invece
esiste, genero una email che invio all'utente con una dettagliata
spiegazione e con un link del tipo:
http:// <nostrosito>/crea_password.php?username=<username>&code=<md5
password dimenticata>
Ho pensato di inserire il md5 della password dimenticata perche` cosi`
chiunque, anche sapendo la struttura del link e magari il nome utente, non
puo' certo sapere il md5 della password dimenticata di altri utenti!
(giusto?)
(c) Se l'utente clicca sul link, viene generata e impostata in automatico
una nuova password di 8 caratteri tutti casuali (range A-Z / 0-9). La
password in chiaro viene inviata all'utente via email.
Certo non sara` ultra sofisticata ma cosi` mi sembra accettabile, cosa ne
dite?
Ciao.

 ciao, f.
