يا روبرت!
لقد قمت بتحليل كود الإضافة وقاعدة الكود المتعلقة بتحكمات المنشورات (الإجراءات) لمعرفة أين يمكنني تعزيز الأمان بشكل أكبر.
كما تم التحليل! في الواجهة الأمامية، توجد خطوات تضمن ما إذا كان المستخدم قادرًا على التعديل على المنشور أم لا، مثل:
- الخطوة الأولى: 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
شكرًا لك على رؤيتك!
هذا رائع جدًا.