E aí, Robert!
Tenho analisado o código do plugin e a base de código sobre controles de post (ações), para verificar em quais pontos posso agir mais fortemente em termos de segurança.
Conforme analisado! No front-end, existem algumas etapas que verificam se o usuário pode ou não editar o post, como:
- 1ª etapa: SiteSetting.post_menu_hidden_items
- 2ª etapa: attrs.canEdit
- 3ª etapa: editPost() - !post.can_edit - controllers/topic
Mas, mesmo que manipulado no front-end, uma vez enviado ao servidor back-end em posts_controller.rb, dentro do método:
def update
O Rails solicita novamente o post, como uma verificação final:
- !guardian.public_send(“can_edit?”, post)
- guardian.ensure_can_edit!(post)
- PostRevisor
Obrigado pelas suas insights!
Isso é ótimo.