sabato 17 settembre 2011

Come eliminare il problema di INVALID TOKEN su Joomla!

Problema INVALID TOKEN con il modulo login di Joomla! o di Virtuemart?

Sei in ottima compagnia :-)

 Adesso ti do qualche consiglio per venire fuori dalla melma..

TOKEN, QUESTO SCONOSCIUTO..

Il token è un meccanismo di sicurezza presente in Joomla! 1.5 per evitare che durante tentativi di hacking qualcuno si intrufoli nel nostro sito web. In pratica quando inseriamo i nostri dati nel modulo di Login di Joomla! ci viene assegnato un “GETTONE” (Token in inglese) che ci segue per tutta la durata della sessione.

Se un utente si trova nel sito e non è attivo il Token significa che non è entrato dalla porta principale (cioè il form di login che gli ha assegnato il token) ma da una porta sul retro (backdoor, termine ricorrente quando si parla di queste cose) o addirittura dalla finestra (cioè da qualche bug della sicurezza di Joomla!).

A questo punto però può scattare un meccanismo non previsto. Supponiamo di avere la cache attivata. Ora supponiamo che la sessione del nostro sito duri 15 minuti (valore default della cache di Joomla!)

Quando la sessione scade l’utente viene buttato fuori dal sito, ma se la cache è attiva il token (che è un valore memorizzato in un campo hidden del modulo di login) rimane in circolazione, però non è più valido! E da qui: INVALID TOKEN.

La riga evidenziata dovrebbe cambiare, questo non succede..


la riga del codice modulo login di Joomla con invalid token
Ovviamente rinunciare alla cache di Joomla! può significare rallentare il sito web (su Aruba in certi momenti della giornata significa addirittura scaricare una pagina ogni 30 secondi) quindi la cosa da fare è semplicemente disabilitarla esclusivamente per il modulo login.

Problema con il modulo login di Virtuemart
Il modulo login di Virtuemart non supporta l’opzione di caching quindi hai un nuovo problema: non puoi disabilitare la cache su tutto il sito perché le prestazioni si ridurebbero drasticamente, soprattutto se hai un sito con oltre 100 prodotti!!

Putroppo il modulo di login Virtuemart non è neanche MVC, quindi è proprio un disastro perchè dovremmo rimodificarlo ad ogni upgrade :-)

Joomla 1.5.23

Nell'ultimo update di Joomla! 1.5 il problema è stato risolto impostando su MAI le opzioni CACHE del modulo login, per cui i problemi dovrebbero essere risolti.. su Virtuemart putroppo non non è così..


Evidenziata la causa, proviamo a trovare una soluzione

Ho creato un plug-in che cancella la cache al momento del login, per scaricarlo basta andare alla mia PAGINA FAN su Facebook 

2 commenti:

  1. Ciao, molto interessante questo articolo, abbiamo un problema simile su un sito in joomla + payplans, ho notato che l'invalid token viene restituito come errore anche quando l'utente in fase di login, clicca sul pulsante di login "svariate" volte... appena ho tempo provo a far disattivare il pulsante al primo click. Hai esperienza di un caso simile?

    RispondiElimina
  2. Grazie Davide articolo molto chiaro, ti chiedo delucidazione\opinione su uno specifico caso d'uso. Mi sto occupando di verificare le prestazioni di un portale che prevede autenticazione. Utilizzo uno specifico tool che richiama automaticamente gli step, memorizzati una prima volta, bypassando il browser, quindi va direttamente lato server. Anche in questo caso pensi non vi sia altra soluzione che il disabilitare la cache del modulo login? (Purtroppo come dici tu rinunciare alla cache di Joomla! può significare rallentare il sito web e quindi sfalsare i numeri) Tu cosa puoi consigliare?

    Grazie 1000,
    Emanuele.

    RispondiElimina