ヤッ、ロバート!
ポスト制御(アクション)に関するプラグインコードとコードベースを分析していました。セキュリティ対策として最も効果的なものを探るためです。
分析の結果、フロントエンド側ではユーザーがポストを編集できるかどうかを確認するいくつかのステップがあります:
- 第1段階:SiteSetting.post_menu_hidden_items
- 第2段階:attrs.canEdit
- 第3段階:editPost() - !post.can_edit - controllers/topic
しかし、フロントエンドで操作されたとしても、posts_controller.rbのupdateメソッドでサーバーサイドに送信されると、Rails がポストを再度取得し、最終的なチェックとして以下の処理を行います:
- !guardian.public_send(“can_edit?”, post)
- guardian.ensure_can_edit!(post)
- PostRevisor
ご示唆いただきありがとうございます!
とても参考になりました。