Bug(バグ) #2497
未完了
opWidgetFormRichTextareaを利用するフォームにおいてHTML特殊文字を実体参照で入力すると変換されてしまう
Maki Takahashi さんが約13年前に追加.
ほぼ5年前に更新.
ステータス:
Pending Fixing(修正待ち)
説明
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)
詳しく調査していませんが, #2407 の現象と類似していると思ったので関連するチケットに追加しておきます.
- 説明 を更新 (差分)
- ステータス を New(新規) から Accepted(着手) に変更
- 担当者 を Maki Takahashi にセット
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
_partsForm.phpを使わない管理画面では変換されないようになりますが、_partsForm.phpを利用しているfrontend側は修正されません。
- 対象バージョン を OpenPNE 3.7.0 から 252 に変更
- 対象バージョン を 252 から OpenPNE 3.8.x に変更
- 対象バージョン を OpenPNE 3.8.x から OpenPNE 3.8.12 に変更
- 3.6 で発生するか を Unknown (未調査) にセット
- 3.8 で発生するか を Unknown (未調査) にセット
- 対象バージョン を OpenPNE 3.8.12 から OpenPNE 3.8.x に変更
- ステータス を 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
- 対象バージョン を OpenPNE 3.8.x から OpenPNE 3.9.0-old に変更
- ステータス を Rejected(差し戻し) から Accepted(着手) に変更
- 進捗率 を 50 から 0 に変更
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
- ステータス を Pending Testing(テスト待ち) から Pending Fixing(修正待ち) に変更
- 担当者 を削除 (
Maki Takahashi)
- 進捗率 を 70 から 0 に変更
本件について、opWidgetFormRichTextarea 限定で発生する問題ではなく、他の widget においても起こりえる問題
opWidgetFormRichTextarea について限定しているのであれば、修正内容は問題無いが、
他の widget の挙動についてもあわせて対応方針を検討した方がよいかと考えられる
一旦、取り込みは保留とします
対象バージョン変更のため、修正内容の確認を行います。
- 対象バージョン を OpenPNE 3.9.0-old から OpenPNE 3.9.0 に変更
- 対象バージョン を OpenPNE 3.9.0 から OpenPNE 3.10.x に変更
他の形式にエクスポート: Atom
PDF