web-dev-qa-db-fra.com

Validation de formulaire Joomla CSRF

J'ai remarqué que cela se produit parfois avec un composant sur lequel je travaille. J'utilise JHtml::_('form.token') dans le formulaire et JSession::checkToken() or die('Invalid Token') pour le vérifier une fois que j'ai reçu les données du formulaire.

Donc, cela déclenche le dé à chaque fois. Une pensée que j'ai est que sur la même page est un formulaire de connexion qui utilise des jetons de formulaire (ce formulaire fonctionne). Ils utilisent également le même jeton.

Quelque chose a changé depuis cet article http://docs.joomla.org/How_to_add_CSRF_anti-spoofing_to_forms a été publié sur la façon d'utiliser CSRF? Pour la simplicité de sa mise en œuvre, je ne vois absolument pas ce que je fais est un "échec".

J'utilise la dernière version de Joomla (3.3.6 au moment de cette publication).

UPDATE: J'ai oublié de dire, le formulaire utilise toujours POST.

3
Jordan Ramstad

FoF a une routine pratique _ csrfProtection dans le contrôleur, avec plusieurs façons de vérifier le jeton:

  • JUtility :: getToken () (pour Joomla 2.5, supprimé de Joomla 3.x)
  • $ session-> getToken ()
  • $ session-> getFormToken ()
  • ou, le champ _token dans l'une des instances précédentes

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

3
Anibal

Est-il possible que vous soumettiez votre formulaire avec la méthode "GET"?

JSession :: checkToken ne validant que par la méthode "POST", vous devez utiliser

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

si vous souhaitez vérifier les demandes GET.

2
Harald Leithner