현재 사용자 작업에 대한 논리적 보안

요, 로버트!

포스트 제어(액션) 관련 플러그인 코드와 코드베이스를 분석해 왔습니다. 보안 측면에서 제가 가장 많이 개선할 수 있는 부분을 확인하기 위해서였죠.

분석 결과! 프론트엔드에서는 사용자가 포스트를 편집할 수 있는지 여부를 확인하는 몇 가지 단계가 있습니다. 예를 들어:

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

하지만 프론트엔드에서 조작되더라도 posts_controller.rb의 백엔드 서버로 한 번만 전송되면, Rails가 최종 확인을 위해 포스트를 다시 요청합니다:

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

귀한 통찰을 공유해 주셔서 감사합니다!
정말 훌륭합니다.