Sicurezza logica sulle azioni dell'utente corrente

Yoo Robert!

Ho analizzato il codice del plugin e la codebase relativa ai controlli dei post (azioni), per verificare su quali potessi intervenire maggiormente in termini di sicurezza.

Come analizzato! Dal lato front-end ci sono alcuni passaggi che verificano se l’utente può modificare o meno il post, come:

  • 1° passaggio: SiteSetting.post_menu_hidden_items
  • 2° passaggio: attrs.canEdit
  • 3° passaggio: editPost() - !post.can_edit - controllers/topic

Tuttavia, anche se manipolato dal front-end, una volta inviato al server back-end in posts_controller.rb, in

def update

viene richiesto nuovamente il post, tramite Rails, come controllo finale:

  • !guardian.public_send(“can_edit?”, post)
  • guardian.ensure_can_edit!(post)
  • PostRevisor

Grazie per i tuoi spunti!
È fantastico.