嘿,Robert!
我一直在分析关于帖子控制(操作)的插件代码和代码库,以评估我在安全性方面能做出哪些改进。
正如分析所示,在前端有若干步骤用于确保用户是否有权编辑帖子,例如:
- 第 1 步:SiteSetting.post_menu_hidden_items
- 第 2 步:attrs.canEdit
- 第 3 步:editPost() - !post.can_edit - controllers/topic
不过,即使前端被篡改,一旦请求被发送到后端服务器,在 posts_controller.rb 的 update 方法中:
def update
Rails 会再次获取帖子,进行最终的检查:
- !guardian.public_send(“can_edit?”, post)
- guardian.ensure_can_edit!(post)
- PostRevisor
感谢你的见解!
这真是太棒了。