TODO #22050

メールフォームのセレクトボックスで、記号が含まれる値を選択してメールを送信すると、CSRFエラーが発生する

瀬戸 優一5ヶ月前に追加. 4日前に更新.

ステータス:解決開始日:
優先度:通常期日:
担当者:江頭 竜二進捗率:

100%

カテゴリ:-
対象バージョン:4.1.5

説明

baser4.1.1で確認しています

リクエストで送信されるセレクトボックスの値がエスケープされたり、されなかったりして、セレクトボックスの選択肢として設定されている値との差異が出るため、発生するようです

一時的な対応としては、プラグインのControllerEventListenerにて以下の処理を行うことで対応可能です。

public function initialize(CakeEvent $event) {
    $Controller = $event->subject();

    if ($Controller->request->params['controller'] == 'mail'
    && $Controller->request->params['action'] == 'submit'
    && isset($Controller->request->data['MailMessage']['<フィールド名>'])){
        $Controller->request->data['MailMessage']['<フィールド名>'] = h($Controller->request->data['MailMessage']['<フィールド名>']);
    }
}

コアに改修を行う場合は以下の方向性がいいのかなと思います
1. メールフォームのindexで、セレクトボックスの値をエスケープせずに表示しているので、エスケープする
2. エスケープされた値が送信されると、設定値の値との差異がでるので、受け取り側でアンエスケープ処理を入れる


関係しているリビジョン

リビジョン 068e90f2
江頭 竜二9日前に追加

fix #22050 メールフォームのセレクトボックスで、記号が含まれる値を選択してメールを送信すると、CSRFエラーが発生する問題を改善

リビジョン c37189dd
権藤 隆行4日前に追加

Merge pull request #976 from ryuring/feature/dev-#22050

fix #22050 メールフォームのセレクトボックスで、記号が含まれる値を選択してメールを送信すると、CSRFエラーが発生する問題を改善

履歴

#1 江頭 竜二4ヶ月前に更新

  • 対象バージョン4.1.3 にセット

コードは作りました。
リリース後に権藤さんにプルリク送って、次のバージョンでリリースしたいと思います。
https://github.com/ryuring/basercms/commit/795153858ee4e20035c789bba514d8bded161e98

#2 江頭 竜二3ヶ月前に更新

  • 対象バージョン4.1.3 から 4.1.4 に変更

#3 永冨 隆之13日前に更新

  • 対象バージョン4.1.4 から 4.1.5 に変更

#4 江頭 竜二6日前に更新

  • 担当者江頭 竜二 にセット

#5 江頭 竜二4日前に更新

  • ステータス担当 から 解決 に変更
  • 進捗率0 から 100 に変更

更新履歴 basercms|commit:068e90f2b9c25444658002ad4b260e1205f28f4f で適用されました。

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