الأمان المنطقي فوق إجراءات المستخدم الحالي

يا روبرت!

لقد قمت بتحليل كود الإضافة وقاعدة الكود المتعلقة بتحكمات المنشورات (الإجراءات) لمعرفة أين يمكنني تعزيز الأمان بشكل أكبر.

كما تم التحليل! في الواجهة الأمامية، توجد خطوات تضمن ما إذا كان المستخدم قادرًا على التعديل على المنشور أم لا، مثل:

  • الخطوة الأولى: SiteSetting.post_menu_hidden_items
  • الخطوة الثانية: attrs.canEdit
  • الخطوة الثالثة: editPost() - !post.can_edit - controllers/topic

لكن، حتى لو تم التلاعب بها من الواجهة الأمامية، بمجرد إرسالها إلى خادم الخلفية في posts_controller.rb، داخل:

def update

يتم إعادة طلب المنشور مرة أخرى بواسطة Rails كإجراء تحقق نهائي:

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

شكرًا لك على رؤيتك!
هذا رائع جدًا.