Ver. 2.6.0.1 の フォームで不具合が発見されました。

Ver. 2.6.0.1のフォームで1ページに複数のフォームがあると
送信ができない場合がある不具合が発見されました。

対象

  • a-blog cms Ver. 2.6.0.1
  • 一つのページの複数のFormモジュールがある
  • CSRF対策のオプションがON(デフォルト: ON)config.system.yaml : form_csrf_enable

対策

/php/ACMS/GET/Form.php の35行目付近の csrf_tokenメソッド を以下のように修正ください。

/**
 * CSRF Token埋め込み
 * 
 * @param string & $tpl
 */
function csrf_token(& $tpl)
{
    $Session = ACMS_Session::singleton();

    if ( $Session->get('formToken') ) {
        $token  = $Session->get('formToken');
    } else {
        $token  = sha1(uniqueString().'acms'.session_id());
        $Session->set('formToken', $token);
        $Session->save();
    }

    // token の埋め込み
    $tpl = preg_replace('@(?=<\s*/\s*form[^\w]*>)@i', '<input type="hidden" name="formToken" value="'.$token.'" />'."\n", $tpl);
}

この度はご迷惑をおかけしてしまい申し訳ございません。

今後ともa-blog cmsをお願い致します。