プロジェクト

全般

プロフィール

Bug(バグ) #696

完了

[opMessagePlugin] 他人のメッセージを自分のゴミ箱に移動できる

Kiwa Sakai さんがほぼ15年前に追加. 14年以上前に更新.

ステータス:
Fixed(完了)
優先度:
Urgent(急いで)
担当者:
対象バージョン:
開始日:
2010-02-19
期日:
進捗率:

100%

予定工数:
3.6 で発生するか:
[QA]バグ通知済:
3.8 で発生するか:

説明

(携帯版にて確認)
以下の手順で他人のメッセージを自分のゴミ箱に移動させることができる。

1. 適当な受信メッセージ詳細画面を表示
2. 削除ボタンのform actionの指定を他人が受信したメッセージのメッセージIDに変更する
3. 削除ボタンを押下する
4. ゴミ箱一覧に2で指定した他人のメッセージが表示される

移動したメッセージについて、メッセージ詳細を閲覧することはできないが、ゴミ箱メッセージ一覧にて送信者・タイトルの確認は行える

発生確認バージョン

opMessagePlugin 0.9.0.3-dev


ファイル

696.diff (1.16 KB) 696.diff Shinichi Urabe, 2010-02-23 20:04
696_new.diff (1.61 KB) 696_new.diff Shinichi Urabe, 2010-02-24 16:12

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

関連している opMessagePlugin - Backport(バックポート) #737: [opMessagePlugin] 他人のメッセージを自分のゴミ箱に移動できるFixed(完了)Shinichi Urabe2010-02-22

操作

Shinichi Urabe さんがほぼ15年前に更新

  • ステータスNew(新規) から Accepted(着手) に変更
  • 担当者Shinichi Urabe にセット
  • 優先度Normal(通常) から Urgent(急いで) に変更

Shinichi Urabe さんがほぼ15年前に更新

  • 進捗率0 から 40 に変更

http://trac.openpne.jp/changeset/13344 で修正しました。

メッセージ一覧からフォームのIDを変更して、他人のメッセージを削除できないようになったが、
エラーや404の対処がなくても問題ないか高橋さんに確認します。
また、詳細画面から削除した場合、404エラーページに飛ばす実装にしたが問題ないかも確認します。
エラーの対処が必要な場合、フォームを使ってるのでMessagePlugin用のバリデーションが必要かもしれません。

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

■ 他人のメッセージが削除できる動作につきまして

formのパラメータを意図的に変更することで
他人のメッセージを削除できてしまう問題についての確認となります。

この現象につきまして、原因を調べましたところ、action の executeDelete メソッドまたは
MessageDeleteForm クラスにて、削除権限の確認がございませんため、
発生する問題であることを確認しました。

このことを踏まえ以下の 2点について方針の確認をお願いします。

1) 受信、送信、削除メッセージ一覧からのメッセージ削除につきまして (メッセージ複数)

3つメッセージを削除しようとし、そのうちの1つのメッセージの値を
不正に修正した場合、3つのメッセージとも不正な値に修正しました場合がございます。

権限がないmessage_idが含まれる場合の対処について以下のいずれの方針がよろしいでしょうか?
他の方法がございましたら、ご指示いただけますと幸いです。

a. 最小限の実装) エラーメッセージは表示させず、権限のないメッセージのみ削除させない
b. エラーメッセージは表示させず、すべてメッセージを削除させない
c. form のバリデーションを用意し、権限のないメッセージが一つでもある場合は
フォームにより、エラーメッセージを表示させる、権限のないメッセージのみ削除させない
d. form のバリデーションを用意し、権限のないメッセージが一つでもある場合は
フォームにより、エラーメッセージを表示させる、すべてメッセージを削除させない
e. 404 エラーページへリダイレクトする、権限のないメッセージのみ削除させない
f. 404 エラーページへリダイレクトする、すべてメッセージを削除させない

2) メッセージ詳細画面でのメッセージ削除につきまして (メッセージ単一)

権限がない場合の対処について以下のいずれの方針がよろしいでしょうか?
他の方法がございましたら、ご指示いただけますと幸いです。

a. 最小限の実装) エラーメッセージを表示させ、権限のないメッセージは削除させない
b. flashを使い、エラーメッセージを表示させ、権限のないメッセージは削除させない
c. 404エラーページにリダイレクトさせ、権限のないメッセージは削除させない

私としましては、今回の修正につきましては最小限の実装におさえ、
エラーメッセージは表示させないような実装となるのですが、
別の修正で、必要に応じてエラーメッセージを表示させる対応を行えばいいのではないかと
認識しております。いずれも [a.] の実装でいいのではないかと考えております。

お手数ですが修正方針のご確認をお願いいたします。

高橋さんより

メッセージ削除についての修正方針ですが

> 1) 受信、送信、削除メッセージ一覧からのメッセージ削除につきまして (メッセージ複数)
こちらはご提案どおり
> a. 最小限の実装) エラーメッセージは表示させず、権限のないメッセージのみ削除させない
でよろしいかと思います。

> 2) メッセージ詳細画面でのメッセージ削除につきまして (メッセージ単一)
こちらについては、いずれにしても削除させないのですが
表示画面(Show)にて他人のメッセージの場合は404エラーに飛ばしているようですので
> c. 404エラーページにリダイレクトさせ、権限のないメッセージは削除させない
こちらで統一するのが良いのではないかと思いました。

修正の都合上、ご提案通りどちらも[a]案のほうがやりやすいということであれば
それでも構いません。
お手数をお掛けしますがよろしくお願いします。

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

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

単一メッセージは404
複数メッセージはエラー無しで、権限のないメッセージのみ削除できない実装で対応していますので確認をお願いします。

Hiroki Mogi さんが14年以上前に更新

  • 進捗率50 から 100 に変更

テストを行いました。修正されていました。

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

  • ファイル 696.diff 696.diff を追加
  • 進捗率100 から 50 に変更

他人がメッセージを元に戻せる操作について修正パッチを添付しました。
確認をお願いします。

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

Rimpei Ogawa さんが14年以上前に更新

  • ファイル を削除 (696.diff)

Rimpei Ogawa さんが14年以上前に更新

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

以下の点を修正してください。

  • opMessagePluginMessageActions::executeDelete() で、sfContext::getInstance()->getUser() は $this->getUser() で OK です
  • PluginDeletedMessageTable::restoreMessage() で sfContext::getInstance()->getUser() を呼ぶように変更されていますが、これにより frontend 以外からこのメソッドの実行ができなくなってしまいます
    • addDeleteMessageQuery() のような限定的な使い方であれば、引数に適切な $memberId を渡すことで回避できるようになります

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

  • ファイル 696_new.diff 696_new.diff を追加
  • ステータスRejected(差し戻し) から Pending Review(レビュー待ち) に変更

誰でもメッセージを元に戻せる問題を修正した差分を修正添付しました。
確認をお願いします。opMessagePlugin のtrunk の最新のソースに追加した差分となります。

Hiroki Mogi さんが14年以上前に更新

テストを実施しました。修正を確認しました。

Rimpei Ogawa さんが14年以上前に更新

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

確認しました。

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

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

テスト、コードチェックありがとうござます。

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

  • プロジェクト22 から opMessagePlugin に変更

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

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

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