Segurança lógica sobre ações do Usuário Atual

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.