Recupero dell'accesso se la password viene dimenticata

Per quanto concerne il recupero dell'accesso quando la password viene dimenticata, si procede innanzitutto a disegnare un HTML spedibile che contenga tutti i dati desiderati (può pescare qualsiasi informazione dall'anagrafe registrata dell'utente registrato, ma non la password).

Non memorizzare le password dei clienti sembra uno scrupolo eccessivo ma invece è molto importante. Purtroppo molte persone "riciclano" le password, cioè usano le medesime password su molti siti diversi. È una pratica pericolosissima perché se qualcuno usa la password impossibile a indovinare X6&rthjbajes725*KKay sul sito della PEC, sul sito di Amazon e sul sito del club amici di Topolino; e se uno hacker irrompe nel sito del club amici di Topolino; allora quello hacker può entrare con la password sul sito PEC e mandare raccomandate a nome dell'utente, poi andare su Amazon e comprare roba a sue spese.

Tenete presente che la vostra sezione di anagrafiche deve comunque contenere un campo chiamato password anche se per massima sicurezza Sar-At non ci memorizzerà la password dei visitatori. Da sempre Sar-At si basa sull'esistenza di un campo con quel nome per riconoscere che la sezione è una sezione anagrafica, e quel campo viene usato internamente. Nelle anagrafiche a massima sicurezza questo campo resterà permanentemente vuoto: di conseguenza, verificate di aver spuntato la casella Può essere nullo, zero o vuoto nella linguetta Struttura. Sar-At rimedia automaticamente a questo errore, e spunta la casella da solo, se passate dalla Struttura per il campo password di una anagrafica a massima sicurezza.

Create, e posizionate sul vostro sito, un riquadro con il sistema di recupero accesso. Si tratterà di un form da compilare, dove il visitatore smemorato si identifica e chiede l'invio di una email. Il sistema di aiuto ai clienti in caso di password dimenticata, così come il login, può funzionare sulla base di un qualsiasi campo unico. Per esempio, i clienti di un e-commerce che non ricordano neppure con quale username si sono iscritti, ma che hanno inserito il proprio codice fiscale, potrebbero usare quest'ultimo per ottenere nuovamente accesso al sito. Il form HTML che il cliente troverà e vorrà compilare per iniziare il processo conterrà un input chiamato byFieldcon il nome del campo unico da usare. Un possibile esempio:

  <form method='post' action='sarat/rememberByEmail.php'>
        <input name='byField' type='hidden' value='customer_email' />
        <input name='template' type='hidden' value='UTENTI' />
        <input name='username' placeholder='Inserisci la tua email' required='required' type='email' size="31" />
        <input type='submit' value='Manda la mail di recupero accesso' />
  </form>

Un esempio più sofisticato:

  <form method='post' action='sarat/rememberByEmail.php'>
        Quale tuo identificativo ricordi?
        <select name='byField'>
              <option value='receiver_email'>Indirizzo e-mail</option>
              <option value='codice_fiscale'>Codice fiscale</option>
              <option value='id'>Codice cliente</option>
              <option value='username'>Username</option>
        </select><br />
        Inseriscine qui il valore:<br />
        <input name='username' placeholder='Identificativo' required='required' type='text' /><br />
        <input name='template' type='hidden' value='UTENTI' />
        <input type='submit' value='Manda la mail di recupero accesso' />
  </form>      

Funzionalmente quest'ultimo avrebbe un aspetto simile a quello della schermata sottostante:

Naturalmente è del tutto possibile che un utente che possiede cinque caselle email non ricordi con quale si è registrato e le provi tutte in sequenza. Quindi ci servono un messaggio "mi spiace, questo identificativo non lo conosco" e un altro che dica qualcosa come "OK, ho capito chi sei, ora ti mando la mail". Questa messaggistica va inserita in altrettante pagine HTML (statiche o dinamiche, come meglio credete) la cui esistenza poi comunicherete a Sar-At nel box "Gestione password dimenticata" della linguetta Modulo.

Se la username è stata trovata, la mail viene compilata e spedita, usando l'oggetto e il nome mittente che avete digitato nella schermata di configurazione (sempre la linguetta Modulo).

La email può assumere qualsiasi impaginazione voi desideriate: semplicemente create una pagina mastro alternativa per la sezione anagrafica (Sar-At si occuperà poi di popolarla con i dati del cliente smemorato e di spedirla al suo indirizzo email presente in archivio). Selezionate questa pagina mastro nel box "Gestione password dimenticata" della linguetta Modulo.

Una interessante possibilità è la gestione della variante di solo testo. Poiché un limitato numero di sistemi postali (per esempio, il webmail Roundcube) non gestisce le mail create in HTML, oggi è possibile aggiungere una versione in testo puro alla mail che raggiunge il cliente. Per ottenere questo scopo create un file con lo stesso nome della pagina mastro ma estensione .txt e registratelo sul server nella cartella principale del sito, dove si trova anche la pagina mastro.

La pagina mastro, e quindi la mail, conterrà un link a una pagina sul sito, nella quale il visitatore potrà digitare la nuova password sostitutiva. Il link, che dovete inserire voi, deve avere questa forma:

http://www.NOMESITO.it/sarat/cart/loginBuyer.php?provider=recover&username={NOMECAMPO}&password={hash}&template=NOMESEZIONE&group=NOMEGRUPPO

Qui, NOMESITO è ovviamente il nome del vostro sito. NOMESEZIONE è il nome della sezione anagrafica a massima sicurezza. NOMECAMPO è il nome del campo primario (se non lo ricordate, lo trovate nella linguetta Modulo, riquadro "Autoregistrazione", in fondo, come mostrato nella schermata d'esempio qui di seguito dove il NOMECAMPO è "receiver_email"). NOMEGRUPPO è il nome del gruppo di cui si cuole recuperare l'accesso. Questo parametro è opzionale, se manca il sistema suppone che si voglia recuperare l'accesso al gruppo degli acquirenti del commercio elettronico.

Non preoccupatevi dello {hash}, si tratta di una password usa e getta che Sar-At genererà automaticamente per il cliente sul momento e che, per maggior sicurezza, automaticamente spirerà dopo un'ora. Il cliente non deve digitarla né ricordarla, viene automaticamente posizionata negli indirizzi generati dinamicamente.

Dobbiamo ora creare la pagina dove l'utente registrato potrà digitare la nuova password. Anche questa viene disegnata a piacere, e poi validata in Sar-At come pagina mastro alternativa della sezione modulo. Al suo cuore troverete comodo infilare un form semplicissimo tipo questo:

  <form action='showForm.php' method='post'>
        <input name='template' type='hidden' value='UTENTI' />
        <input name='id' type='hidden' value='{id}' />
        <input name='masterPage' type='hidden' value='recupero.html' />
        <label>Password:
        <input name='password' type='password' required='required' />
        </label>
        <input type='submit' value='Registra nuova password' />
  </form>

Lo input chiamato template contiene, come sempre, il nome della vostra sezione modulo per anagrafiche.

Lo input chiamato masterPage contiene il nome di questa stessa pagina mastro (insomma, il file che state editando).

Il resto dovrebbe andare benone così come lo vedete qui sopra, anche se naturalmente potete risistemare le cose come meglio credete. Indicate che questa è una pagina mastro alternativa della sezione anagrafiche. Poi selezionatene il nome nella linguetta Modulo sotto alla opzione Pagina dove si digita la nuova password.

A password sostituita, il sistema rinvia l'utente registrato alla medesima pagina che accoglie chi ha completato la registrazione completa con successo. Se avete previsto una mail di conferma, essa viene spedita da Sar-At.

Per impedire che un malintenzionato infastidisca un vostro utente registrato, sottoponendo il modulo di promemoria password una volta al secondo per giorni e giorni, Sar-At vi permette di limitare il recupero password. Ogni tentativo, sia quelli coronati dal successo sia quelli infruttuosi, verrà registrato in una tabella che ne tiene traccia (log).