プロジェクト

全般

プロフィール

Backport(バックポート) #2090

完了

携帯のプロフィール画像変更画面などの画像の大サイズ表示がアクセスエラーになる

Masato Nagasawa さんが13年以上前に追加. 13年以上前に更新.

ステータス:
Fixed(完了)
優先度:
High(高め)
担当者:
対象バージョン:
開始日:
2011-01-05
期日:
進捗率:

100%

予定工数:

説明

Overview (現象)

http://sns.openpne.jp/diary/25849 より転記

2010年12月22日にリリースされた脆弱性対処が原因で携帯ページの画像が表示されません。
該当部分は下記ファイルで指定されている 320x320 サイズの拡大画像です。

member/templates/configImageSuccess.php
member/templates/deleteImageSuccess.php
friend/templates/showImageSuccess.php
community/templates/configImageSuccess.php
community/templates/deleteImageSuccess.php

プラグイン等はまだ検索していません。

Causes (原因)

sfImageHandlerPlugin 側で許可されていない画像サイズを指定していることが原因。
許可されている画像サイズを指定するか、320x320を許可リストに追加する必要があります。

Way to fix (修正内容)

sfImageHandlerPlugin の画像許可サイズに 320x320 を追加する修正で対応します。


関連するチケット 1 (0件未完了1件完了)

関連している OpenPNE 3 - Bug(バグ) #1861: 携帯のプロフィール画像変更画面などの画像の大サイズ表示がアクセスエラーになるFixed(完了)Masato Nagasawa2011-01-05

操作

Shinichi Urabe さんが13年以上前に更新

  • 対象バージョンOpenPNE 3.4.13 から OpenPNE 3.4.14 に変更

Shinichi Urabe さんが13年以上前に更新

  • 対象バージョンOpenPNE 3.4.14 から OpenPNE 3.4.15 に変更

親チケットが対応中のため修正は次期バージョンとします

Yuya Watanabe さんが13年以上前に更新

  • ステータスNew(新規) から Accepted(着手) に変更
  • 担当者Yuya Watanabe にセット

Yuya Watanabe さんが13年以上前に更新

本チケットではバックポート元の#1861および#2103の修正を直接反映することができませんでした。
理由としては以下のものとなります。
  • OpenPNE 3.5.3を対象とする#1087における修正をもとにしたものであるため、依存関係を解決できない

以下本チケットにおける調査結果を示します。

調査結果

本チケットは携帯版での写真編集ページ(/index.php/member./configImage)における問題を扱っているので以下このページについて述べます。
写真編集ページでapps/mobile_frontend/modules/community/templates/configImageSuccess.phpのテンプレートを用いていますが、ここで以下の記述があります。

6 link_to(__('Expansion'), sf_image_path($community->getFile(), array('size' => '320x320', 'format' => 'jpg'))),

この記述の意図としては、指定した画像ファイルの大きさ320x320のものを表示するものだと思われます。
※plugins/sfImageHandlerPlugin/lib/helper/sfImageHelper.phpのsf_image_path()において'format'は用いられていませんが今回とは別問題とします。
sf_image_path()では「img/ファイルフォーマット/画像ファイルサイズ/ファイル名」という形式の文字列が返ってくるようです。今回の場合、「img/ファイルフォーマット/w320_h320/ファイル名」という形になります。

ここで生成されたURLのリンクへ行くと画像が表示されないという状態になります。
サーバ側を見てみると対象となる画像ファイルサイズのディレクトリ(img/ファイルフォーマット/w320_h320)が存在していませんでした。

また、画像を生成するクラスであるplugins/sfImageHandlerPlugin/lib/image/generator/sfImageGeneratorGD.class.phpには以下のように記述されています。ここはバックポート元の修正部分に相当する部分だと思われます。

27     $allowedSize = array('76x76', '120x120', '180x180', '240x320', '600x600'),

修正案

以上より、本チケットの修正案としては以下の3つが挙げられます。
  • バックポート元と同様に#1087相当の修正を行った後にバックポート元と同じ修正を行う
  • configImageSuccess.phpにおける表示するファイルサイズを画像許可サイズに指定されているものに変更する
  • sfImageGeneratorGDの画像許可サイズに320x320を追加する

修正実行案

本チケットにおいては#1087における修正を加味する必要はなく、バックポート元単体では3番目を採用しているため、本チケットでも
  • sfImageGeneratorGDの画像許可サイズに320x320を追加する

を採用することで解決することを考えます。

wa ta さんが13年以上前に更新

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

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

Yuma Sakata さんが13年以上前に更新

テストOKです。

Minoru Takai さんが13年以上前に更新

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

レビューをしました。

この問題は note-4 で示されている通り、sfImageGenerator クラス周りのファイルが 3.4 以前と 3.6 以後で異なっているため、親チケットの修正を直接取り入れることができません。しかしながら note-4 で検討されている内容の通りで plugins/sfImageHandlerPlugin/lib/image/generator/sfImageGeneratorGD.class.php の $allowedSize を変更する修正は適切だと思います。修正内容は OK です。

余談ですが、 3.6 以降では array('48x48', '76x76', '120x120', '180x180', '240x320', '320x320', '600x600') のように 48x48 まで許可されていますが、これは #1116 の内容を扱ったために追加されています。 48x48 サイズの画像を扱う箇所がない限りは 3.4.x には 76x76 から 600x600 までの 6 種類のサイズが許可されていれば良いということです。

Mutsumi Imamura さんが13年以上前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

http://redmine.openpne.jp/issues/2090#note-6 でテスト済みです。
問題ありませんので完了とします。

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