現在のユーザーのアクションに対する論理的なセキュリティ

ヤッ、ロバート!

ポスト制御(アクション)に関するプラグインコードとコードベースを分析していました。セキュリティ対策として最も効果的なものを探るためです。

分析の結果、フロントエンド側ではユーザーがポストを編集できるかどうかを確認するいくつかのステップがあります:

  • 第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

ご示唆いただきありがとうございます!
とても参考になりました。