Joomla.it Forum

Non solo Joomla... => Sviluppo => : ilnavigatore 14 Apr 2016, 22:19:06

: [RISOLTO] Verifica email
: ilnavigatore 14 Apr 2016, 22:19:06
Ciao a tutti,
Sto creando un piccolo componente per gestire la verifica dell'email per gli utenti che inseriscono un annuncio nel mio sito.
Vorrei utilizzare all'incirca lo stesso sistema che viene utilizzato da sistema per la validazione dell'utente.
Quindi creazione del token ed invio tramite email.
Quello che non mi è chiaro è come venga pescato il token, ho sbirciato in giro in com_user\controller.php e nel models\registrations.php e non c'è un getVar($token)...
Sono curioso di sapere come viene gestita la cosa?
Scusate se faccio domande stupide, ma mi piace capire le cose fino in fondo.
Grazie
: Re:Verifica email
: oncelot 14 Apr 2016, 22:30:14
Onestamente non lo so nemmeno io ma guarderò, ma cosa ne pensi di generare un md5 sulla data-orario, menorizzi sul db e invii per email e poi fai un confronto..
: Re:Verifica email
: ilnavigatore 14 Apr 2016, 22:44:41
Ciao oncelot, si alla fine si tratta di fare quello però vorrei capire come fare il get del token in maniera abbastanza sicura. E poi sono curioso di sapere come funziona.
: Re:Verifica email
: MariaElenaBoschi 15 Apr 2016, 08:52:48
Il token è una sicurezza per evitare request forgery quindi necessita di essere non prevedibile.
Data e ora oltre a essere prevedibile non è univoco. Lo sarebbe usando microtime ma saresti costretto a mettere in cache il token perchè non più riproducibile (un attimo dopo cambierebbe l'hash).

Per sapere da dove viene basta un ide di sviluppo.
In Joomla 3.5 credo venga usata una libreria hash di terze parti
: Re:Verifica email
: giovi 15 Apr 2016, 10:38:28
Per generarlo seguendo la prassi di joomla puoi seguire queste indicazioni: https://docs.joomla.org/How_to_add_CSRF_anti-spoofing_to_forms

Se vuoi sapere come viene realmente implementato segui il consiglio di MariaElenaBoschi di utilizzare una buona IDE che ti riporta alla definizione del metodo che lo genere (scoprirai che è nel file libraries/joomla/session/session.php)

:
    /**
     * Create a token-string
*
     * @param   integer $length Length of string
*
     * @return  string  Generated token
*
     * @since   11.1
*/
    protected function _createToken ($length = 32)
{
        static $chars = '0123456789abcdef';
        $max = strlen($chars) - 1;
        $token = '';
        $name = session_name();

        for ($i = 0; $i < $length; ++$i)
{
            $token .= $chars[(rand(0, $max))];
}

        return md5($token . $name);
}
: Re:Verifica email
: ilnavigatore 15 Apr 2016, 12:26:23
Ciao e grazie per le risposte!!
Come generarlo sono riuscito a capirlo, è come "pescarlo" dal link che invio tramite email che non mi è chiaro. Perche dovrei richiamare un task del mio componente, pescare il token e confrontarlo per confermare la verifica dell'email. Potrei anche fare un semplice getVar ma ne risentirebbe la sicurezza.
: Re:Verifica email
: ilnavigatore 15 Apr 2016, 13:50:22
Ciao giovi,
grazie mille il documento che hai inserito mi da tutte le risposte!!
Grazie ancora