操作
Bug(バグ) #3212
未完了mobile_frontend アプリケーションの default/urlProxy の処理とこのページに飛ぶ前の _op_auto_links_outer_urls() ヘルパーの処理でHTMLエスケープとURLエンコードの順番が逆になっている
開始日:
2012-09-27
期日:
進捗率:
0%
予定工数:
3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)
説明
現象¶
- プロフィール本文や日記本文に外部のURL (
http://example.com/?hoge=fuga&test=tetete
) のようなURLを投稿する - 携帯端末で日記本文やプロフィール本文を開き、URLをクリックすると中継用のページが表示される
- 以下のポイントが不自然である
- 中継用のページに飛んだ時点でURLを見ると (
/proxy?url=http%3A%2F%2Fexample.com%2F%3Fhoge%3Dfuga%26amp%3Btest%3Dtetete
) のようになっている - input フィールドの URL が (
http://example.com/?hoge=fuga&test=tetete
) となっている - mailto のスキームを開くと (
http://example.com/?hoge=fuga&test=tetete
) となっている - Googleの変換用のURLも (
http://www.google.co.jp/gwt/x?u=http%3A%2F%2Fexample.com%2F%3Fhoge%3Dfuga%26amp%3Bamp%3Btest%3Dtetete
) となっている
- 中継用のページに飛んだ時点でURLを見ると (
原因¶
- A: _op_auto_links_outer_urls() ヘルパーにパラメータが渡った時点でHTMLエスケープされた文字列が渡ってきている、HTMLエスケープされた文字列を urlencode() している 「処理の順番が逆」
- B: default/urlProxy のテンプレートで HTMLエスケープされた文字列を urlencode() している「処理の順番が逆」
修正案¶
- urlencode() した文字列を HTMLエスケープするように順番を変える
- HTMLエスケープされた文字列は一度戻したうえで、urlencode() し、その文字列を再度 HTMLエスケープするように処理を変える
ファイル
Shinichi Urabe さんが約12年前に更新
- ファイル issue-3212.patch issue-3212.patch を追加
修正案のパッチを添付します
(注) 添付の修正案は _op_auto_links_outer_urls() にHTMLエスケープをされていない文字列が渡された場合の挙動は考慮できていないため修正は不十分である
操作