it-swarm-ja.tech

Joomla CSRFフォーム検証

私が取り組んでいるコンポーネントでこれが時々起こることに気づきました。フォームでJHtml::_('form.token')を使用し、フォームデータを受信したらJSession::checkToken() or die('Invalid Token')を使用してチェックします。

だから、毎回ダイスを誘発しています。私の考えの1つは、同じページにフォームトークンを使用するログインフォームがあることです(そのフォームは機能します)。また、どちらも同じトークンを使用します。

この記事 http://docs.joomla.org/How_to_add_CSRF_anti-spoofing_to_forms がCSRFの使用方法について公開されてから、何か変更はありますか?実装するのがいかに簡単かというと、自分がやっていることが「失敗」している様子がまったくわかりません。

Joomlaの最新バージョン(この投稿時点での3.3.6)を使用しています。

更新:言うのを忘れて、フォームは常にPOSTを使用します。

3
Jordan Ramstad

FoFには、コントローラーに便利な_ csrfProtectionルーチンがあり、トークンをチェックするいくつかの方法があります。

  • JUtility :: getToken()(Joomla 2.5の場合、Joomla 3.xから削除)
  • $ session-> getToken()
  • $ session-> getFormToken()
  • または、以前のインスタンスの_tokenフィールド

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

3
Anibal

「GET」メソッドを使用してフォームを送信することはできますか?

JSession :: checkTokenは「POST」メソッドに対してのみ検証するため、以下を使用する必要があります

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

gETリクエストを確認したい場合。

2
Harald Leithner