it-swarm.dev

Convalida del modulo CSRF di Joomla

Ho notato che ciò accade occasionalmente con un componente su cui sto lavorando. Uso JHtml::_('form.token') nel modulo e JSession::checkToken() or die('Invalid Token') per controllarlo una volta ricevuto i dati del modulo.

Quindi sta innescando il dado ogni volta. Un pensiero che ho è che sulla stessa pagina è un modulo di accesso che utilizza i token del modulo (quel modulo funziona). Entrambi usano lo stesso token.

È cambiato qualcosa da quando questo articolo http://docs.joomla.org/How_to_add_CSRF_anti-spoofing_to_forms è stato pubblicato su come usare CSRF? Per quanto sia semplice da implementare, non riesco a vedere in alcun modo che ciò che sto facendo è "non riuscito".

Sto usando l'ultima versione di Joomla (3.3.6 al momento della pubblicazione).

AGGIORNAMENTO: Dimenticato di dire, il modulo utilizza sempre POST.

3
Jordan Ramstad

FoF ha una pratica _ csrfProtection routine nel controller, con diversi modi per controllare il token:

  • JUtility :: getToken () (per Joomla 2.5, rimosso da Joomla 3.x)
  • $ Session-> ControllaToken ()
  • $ Session-> getFormToken ()
  • oppure, il campo _token in una delle precedenti istanze

https://github.com/akeeba/fof/blob/development/fof/controller/controller.php#L3308

3
Anibal

È possibile che invii il modulo con il metodo "GET"?

Poiché JSession :: checkToken viene convalidato solo con il metodo "POST", è necessario utilizzare

JSession::checkToken('get') or die();

se ti piace controllare le richieste GET.

2
Harald Leithner