Привет, Роберт!
Я проанализировал код плагинов и кодовую базу, касающуюся управления постами (действиями), чтобы определить, где можно усилить безопасность.
Как выяснилось, на стороне фронтенда есть несколько шагов, проверяющих, может ли пользователь редактировать пост:
- Шаг 1: SiteSetting.post_menu_hidden_items
- Шаг 2: attrs.canEdit
- Шаг 3: editPost() - !post.can_edit - контроллеры темы
Однако даже если эти проверки будут обойдены на фронтенде, при отправке запроса на сервер бэкенда в posts_controller.rb, в методе:
def update
Rails снова загружает пост, выполняя окончательные проверки:
- !guardian.public_send(“can_edit?”, post)
- guardian.ensure_can_edit!(post)
- PostRevisor
Спасибо за ваши идеи!
Это очень полезно.