it-swarm.com.de

Joomla CSRF Formularvalidierung

Ich habe bemerkt, dass dies gelegentlich mit einer Komponente passiert, an der ich arbeite. Ich benutze JHtml::_('form.token') im Formular und JSession::checkToken() or die('Invalid Token'), um es zu überprüfen, sobald ich die Formulardaten erhalte.

Es löst also jedes Mal den Würfel aus. Ein Gedanke, den ich habe, ist, dass sich auf derselben Seite ein Anmeldeformular befindet, das Formulartoken verwendet (dieses Formular funktioniert). Sie verwenden auch beide das gleiche Token.

Hat sich etwas geändert, seit dieser Artikel http://docs.joomla.org/How_to_add_CSRF_anti-spoofing_to_forms zur Verwendung von CSRF veröffentlicht wurde? Für wie einfach es zu implementieren ist, sehe ich einfach nicht, was ich tue, ist "scheitern".

Ich verwende die neueste Version von Joomla (3.3.6 zum Zeitpunkt dieses Postings).

UPDATE: Ich habe vergessen zu sagen, das Formular verwendet immer POST.

3
Jordan Ramstad

FoF hat eine praktische Routine _ csrfProtection im Controller, mit verschiedenen Möglichkeiten, das Token zu überprüfen:

  • JUtility :: getToken () (für Joomla 2.5, entfernt von Joomla 3.x)
  • $ session-> getToken ()
  • $ session-> getFormToken ()
  • oder das Feld _token in einer der vorherigen Instanzen

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

3
Anibal

Ist es möglich, dass Sie Ihr Formular mit der Methode "GET" abschicken?

Da JSession :: checkToken nur gegen die "POST" -Methode validiert, müssen Sie verwenden

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

wenn Sie die GET-Anforderungen überprüfen möchten.

2
Harald Leithner