プロジェクト

全般

プロフィール

Bug(バグ) #2497

opWidgetFormRichTextareaを利用するフォームにおいてHTML特殊文字を実体参照で入力すると変換されてしまう

Maki Takahashi12年以上前に追加. 約4年前に更新.

ステータス:
Pending Fixing(修正待ち)
優先度:
Normal(通常)
担当者:
-
対象バージョン:
開始日:
2011-10-14
期日:
進捗率:

0%

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

説明

Overview (現象)

opWidgetFormRichTextareaおよび、opWidgetFormRichTextareaを継承するwidgetを利用するフォームにおいて
HTML特殊文字(例:©)を実体参照( © )で入力すると変換されてしまう。

Causes (原因)

sfWidget::escapeOnce() から呼ばれる sfWidget::fixDoubleEscape() が原因。

  static public function escapeOnce($value)
  {
    return self::fixDoubleEscape(htmlspecialchars((string) $value, ENT_QUOTES, self::getCharset()));
  }

  static public function fixDoubleEscape($escaped)
  {
    return preg_replace('/&([a-z]+|(#\d+)|(#x[\da-f]+));/i', '&$1;', $escaped);
  }

確認バージョン

OpenPNE 3.7.0-dev (master)
OpenPNE 3.6.1 (stable-3.6.x)
OpenPNE 3.4.17 (stable-3.4.x)


関連するチケット

関連している OpenPNE 3 - Bug(バグ) #2407: 管理画面ガジェット設定で&などのエスケープ文字を入力すると元の文字で表示される New(新規) 2011-09-17
コピー先 OpenPNE 3 - Backport(バックポート) #3641: opWidgetFormRichTextareaを利用するフォームにおいてHTML特殊文字を実体参照で入力すると変換されてしまう New(新規) 2011-10-14
コピー先 OpenPNE 3 - Backport(バックポート) #3665: opWidgetFormRichTextareaを利用するフォームにおいてHTML特殊文字を実体参照で入力すると変換されてしまう New(新規) 2014-07-15

関係しているリビジョン

リビジョン 8760ae3a (差分)
Maki Takahashi12年以上前に追加

(fixes #2497) changed opWidgetFormRichTextarea::render() without use sfWidget::fixDoubleEscape()

履歴

#1 Yuya Watanabe12年以上前に更新

詳しく調査していませんが, #2407 の現象と類似していると思ったので関連するチケットに追加しておきます.

#2 Maki Takahashi12年以上前に更新

  • 説明 を更新 (diff)
  • ステータスNew(新規) から Accepted(着手) に変更
  • 担当者Maki Takahashi にセット

#3 Maki Takahashi12年以上前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 8760ae3a9ec1addd11e40fac698c1c89cb2e5832 で適用されました。

#4 Maki Takahashi12年以上前に更新

_partsForm.phpを使わない管理画面では変換されないようになりますが、_partsForm.phpを利用しているfrontend側は修正されません。

#5 Shouta Kashiwagi約12年前に更新

  • 対象バージョンOpenPNE 3.7.0 から 252 に変更

#6 Shouta Kashiwagiほぼ12年前に更新

  • 対象バージョン252 から OpenPNE 3.8.x に変更

#7 Shinichi Urabeほぼ10年前に更新

  • 対象バージョンOpenPNE 3.8.x から OpenPNE 3.8.12 に変更
  • 3.6 で発生するかUnknown (未調査) にセット
  • 3.8 で発生するかUnknown (未調査) にセット

#8 誠二 天重ほぼ10年前に更新

  • コピー先 Backport(バックポート) #3641: opWidgetFormRichTextareaを利用するフォームにおいてHTML特殊文字を実体参照で入力すると変換されてしまう を追加

#9 誠二 天重ほぼ10年前に更新

  • 対象バージョンOpenPNE 3.8.12 から OpenPNE 3.8.x に変更

#10 isao sano9年以上前に更新

  • コピー先 Backport(バックポート) #3665: opWidgetFormRichTextareaを利用するフォームにおいてHTML特殊文字を実体参照で入力すると変換されてしまう を追加

#11 Shinichi Urabe9年以上前に更新

  • ステータスPending Review(レビュー待ち) から Rejected(差し戻し) に変更

PHPDoc の説明を日本語で書いている箇所がコア側に関して今回追加された箇所以外、一部ありますが、他は見当たらないです.
MemberConfigForm にも存在しますが、、、
統一させるためにも他とあわせておいた方がよいかと思います

$ ag "\* [\x20-\x7e]+?[^\x01-\x7E]+?" --ignore-dir=vendor --ignore-dir=web --ignore-dir=plugins -l |grep php$
lib/form/doctrine/MemberConfigForm.class.php
lib/widget/opWidgetFormRichTextarea.class.php
test/unit/helper/opUtilHelperTest.php

#12 Shinichi Urabe9年以上前に更新

  • 対象バージョンOpenPNE 3.8.x から OpenPNE 3.9.0-old に変更

#13 Maki Takahashi9年以上前に更新

  • ステータスRejected(差し戻し) から Accepted(着手) に変更
  • 進捗率50 から 0 に変更

#14 Maki Takahashi9年以上前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

https://github.com/openpne/OpenPNE3/pull/178 にて
説明を英語に書き換えプルリクエストしました。

MemberConfigFormも高橋の仕業のようです…

#15 Shinichi Urabe9年以上前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

レビューOKです

#16 Shinichi Urabe9年以上前に更新

  • ステータスPending Testing(テスト待ち) から Pending Fixing(修正待ち) に変更
  • 担当者 を削除 (Maki Takahashi)
  • 進捗率70 から 0 に変更

本件について、opWidgetFormRichTextarea 限定で発生する問題ではなく、他の widget においても起こりえる問題
opWidgetFormRichTextarea について限定しているのであれば、修正内容は問題無いが、
他の widget の挙動についてもあわせて対応方針を検討した方がよいかと考えられる

一旦、取り込みは保留とします

#17 isao sanoほぼ7年前に更新

対象バージョン変更のため、修正内容の確認を行います。

#18 isao sanoほぼ7年前に更新

  • 対象バージョンOpenPNE 3.9.0-old から OpenPNE 3.9.0 に変更

#19 isao sanoほぼ7年前に更新

再現します。

#20 kaoru n約4年前に更新

  • 対象バージョンOpenPNE 3.9.0 から OpenPNE 3.10.x に変更

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