プロジェクト

全般

プロフィール

Bug(バグ) #3519

管理画面 カテゴリの編集時に csrf_token のバリデーションエラーが発生する場合にホワイトアウトする

Yuya Watanabe10年以上前に追加. 約4年前に更新.

ステータス:
New(新規)
優先度:
Low(低め)
担当者:
-
対象バージョン:
開始日:
2013-12-09
期日:
進捗率:

0%

3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)

説明

概要

管理画面 カテゴリの編集時に csrf_token のバリデーションエラーが発生する場合にホワイトアウトする.

再現手順

  1. 「管理画面 > コミュニティカテゴリ設定」 を開く( /pc_backend.php/community/categoryList )
  2. 何らかの方法で csrf_token の値を書き換えてそのフォームの「編集」ボタンをクリック
    • 例えば WebDeveloper の「フォーム > 画面内にフォーム情報を表示」で表示された _csrf_token のフォームの値を変更
  3. ホワイトアウトする

dev モードで閲覧すると下記のようなエラーメッセージが表示される.

Fatal error: Call to a member function getMessage() on a non-object in .../apps/pc_backend/modules/community/actions/actions.class.php on line 216 

テストコード実行時

$ php test/functional/pc_backend/communityActionsTest.php 
> Login
# get /
# post /symfony/login
> /community/categoryList - CSRF
# post /community/categoryList
ok 1 - message about CSRF token exists
> /community/categoryEdit/id/1 - CSRF
# post /community/categoryEdit/id/1
not ok 2 - message about CSRF token exists
#     Failed test (./lib/test/opTestFunctional.class.php at line 89)
#            got: false
#       expected: true
> /community/categoryDelete/id/1 - CSRF
# post /community/categoryDelete/id/1
ok 3 - message about CSRF token exists
> /community/addDefaultCommunity/id/1 - CSRF
# post /community/addDefaultCommunity/id/1
not ok 4 - message about CSRF token exists
#     Failed test (./lib/test/opTestFunctional.class.php at line 89)
#            got: false
#       expected: true
> /community/removeDefaultCommunity/id/1 - CSRF
# post /community/removeDefaultCommunity/id/1
ok 5 - message about CSRF token exists
> /community/addAllMember/id/1 - CSRF
# post /community/addAllMember/id/1
ok 6 - message about CSRF token exists
> /community/delete/id/1 - CSRF
# post /community/delete/id/1
ok 7 - message about CSRF token exists
> /community/list - XSS
# get /community/list
ok 8 - all of value of Member.name are escaped.
ok 9 - all of value of Community.name are escaped.
> /community/defaultCommunityList - XSS
# get /community/defaultCommunityList
ok 10 - all of value of Member.name are escaped.
ok 11 - all of value of Community.name2 are escaped.
> /community/addDefaultCommunity/id/1055 - XSS
# get /community/addDefaultCommunity/id/1055
ok 12 - all of value of Member.name are escaped.
ok 13 - all of value of Community.name are escaped.
> /community/removeDefaultCommunity/id/1056 - XSS
# get /community/removeDefaultCommunity/id/1056
ok 14 - all of value of Member.name are escaped.
ok 15 - all of value of Community.name2 are escaped.
> /community/addAllMember/id/1055 - XSS
# get /community/addAllMember/id/1055
ok 16 - all of value of Member.name are escaped.
ok 17 - all of value of Community.name are escaped.
> /community/delete/id/1055 - XSS
# get /community/delete/id/1055
ok 18 - all of value of Member.name are escaped.
ok 19 - all of value of Community.name are escaped.
1..19
# Looks like you failed 2 tests of 19.

原因

#1602 「コミュニティカテゴリを空欄で追加できてしまう」でグローバルエラーに「必須項目です。」のようなエラーを表示作用として name のみを対象とするようになったため,それ以外のエラーメッセージが発生して name にはエラーがない場合にオブジェクトが得られずホワイトアウトする.

修正案

  • 空欄のエラーメッセージをグローバルエラーではなくそれぞれのフォームフィールドでエラーメッセージを表示する
    • この場合、 CommunityCategory モデルから getForm() でフォームが取得されているためバリデーション時の情報がフォームレンダリング時に失われている状態であるのでその修正を行う必要がある
  • すべてのエラーを表示するように変更する

履歴

#1 Yuya Watanabe10年以上前に更新

  • 説明 を更新 (diff)

#2 Chiharu Nakajima9年以上前に更新

  • 優先度Normal(通常) から Low(低め) に変更

#3 Chiharu Nakajima9年以上前に更新

このチケットの内容は下記の項目に該当する不具合であるため、一旦優先度を下げます。
・未対応でもユーザーに影響が少ない不具合(回避可能な不具合である等)

#4 kaoru n約4年前に更新

  • 対象バージョンOpenPNE 3.10.x にセット

他の形式にエクスポート: Atom PDF