الحساب الصحيح قد يطلب إجراء غير مسموح
تخيل شركة مصرية تبيع محتوى تدريبيا. سجل عميل دخوله بنجاح. هذه الخطوة لا تجيب عن سؤال: هل اشترى الدورة المطلوبة؟ هل تغير استحقاقه بعد استرداد المبلغ؟ هل يحق له تغيير سعر الدورة؟ لكل سؤال قرار مستقل.
قد يستطيع العميل تعديل تفضيلاته الشخصية، بينما يعدل محرر المحتوى الدروس ويراجع موظف المالية عمليات الدفع. اشتراكهم في استخدام الموقع لا يعني اشتراكهم في الصلاحيات.
تميز إرشادات OWASP للتفويض بين إثبات الحساب والسماح بالفعل، وتدعم فحص الصلاحية مع كل طلب ومنح الحد اللازم للعمل فقط.
ما الذي يقدمه تسجيل الدخول المستضاف؟
توفر Gammal Tech تسجيل دخول مستضافا وتخزينا لبيانات مستخدم التطبيق. يساعد ذلك على تقليل مكونات الدخول التي يبنيها فريق الموقع ويديرها بنفسه. يحصل التطبيق على رمز جلسة، ولا يحصل عبر الدخول على البريد أو الهاتف أو مستندات هوية الحساب.
تظل الشركة مسؤولة عن تحديد الأفعال المسموحة داخل منتجها. الحساب الذي جرى التحقق منه لا يثبت أن صاحبه موظف لديك أو مدير أو مشتر في دورة معينة. هذه حقائق تجارية تحتاج إلى أدلتها.
عند تصميم كل إجراء، اسأل: من يطلبه؟ وأي سجل يريد استخدامه؟ وما نوع التغيير؟ وما المصدر الموثوق الذي يثبت حقه؟ هذه الأسئلة أوضح من شرط عام معناه أن كل مسجل دخول مسموح له.
اكتب جدول الصلاحيات بلغة العمل
| الإجراء | من يسمح له؟ | الدليل المطلوب |
|---|---|---|
| تغيير تفضيل العرض | صاحب التفضيل | جلسة صحيحة ونطاق المستخدم المناسب |
| فتح دورة مدفوعة | عميل مستحق للدورة | استحقاق موثوق لهذه الدورة |
| تعديل درس | محرر مكلف بالمحتوى | صلاحية تحرير حالية |
| رد مبلغ | مسؤول مالي مخول | صلاحية مناسبة وعملية دفع محددة |
افصل الإجراءات عندما تختلف خطورتها. قراءة فاتورة ليست مثل تغيير بيانات التحويل الموجودة بها. حدد أيضا من يوافق على الصلاحية ومتى تنتهي وكيف تتغير عند انتقال موظف إلى وظيفة أخرى.
حقل قابل للتعديل لا يثبت حقا مدفوعا
قد يحتوي ملف المستخدم على theme وlanguage وpaid. أول حقلين تفضيلات عادية. لكن إذا كان المستخدم يستطيع تغيير paid، فلا يجوز اعتبار قيمته دليلا على الدفع. حفظ الادعاء على سيرفر خارجي لا يحوله إلى حقيقة موثوقة.
افصل بين ما يستطيع العميل تعديله وما تثبته إجراءات الشركة. تحقق من الدفع بالطريقة الموثقة قبل تنفيذ الخدمة، واجعل حقوق الإدارة خارج إعدادات المستخدم القابلة للتعديل.
راجع أيضا أدوات الدعم واستيراد الجداول. أداة تنسخ كل حقول الملف الشخصي إلى سجل الصلاحيات قد تمنح سلطة لمعلومة أدخلها العميل. تتبع أصل كل حقل مؤثر ومن يملك تغييره قبل الاعتماد عليه.
إخفاء الزر ليس وسيلة منع كافية
إخفاء زر الإدارة يجعل الواجهة أسهل، لكنه لا يمنع الطلب نفسه. يستطيع المستخدم تعديل حالة المتصفح أو إرسال طلب دون المرور بالزر الظاهر. يجب أن ترفض العملية المحمية الطلب غير المسموح داخل باك اند أو خدمة موثوقة.
إذا كان موقعك واجهة ثابتة، اختر خدمات تستطيع تطبيق قواعد الوصول المطلوبة. وإذا لم تدعم الخدمة قاعدة أساسية لعملك، أعد تصميم الرحلة أو أضف مكونا موثوقا مناسبا. لا تعتمد على جافا سكريبت وحدها ولا تخترع نقطة اتصال غير موثقة.
تسجيل الدومين وفحص الجلسة يؤديان وظائف مفيدة، لكنهما لا يجيبان عن جميع أسئلة الصلاحيات. طلب صادر من الموقع الصحيح ومن حساب مسجل قد يطلب إجراء لا يحق لهذا الحساب تنفيذه.
اختبر الرفض كما تختبر النجاح
- جرب الإجراء دون تسجيل دخول وتأكد من النتيجة المطلوبة.
- جربه كمستخدم عادي إذا كان يتطلب صلاحية أعلى.
- اختبر طلب سجل مستخدم آخر ببيانات وهمية في بيئة تجريبية.
- عدل حقول المستخدم وتأكد أن ذلك لا يمنحه اشتراكا أو صلاحية إدارة.
- أزل صلاحية عمل من حساب تجريبي وتحقق من رفض إجراءاته غير المسموحة بعد الإزالة.
- تأكد أن الرفض لا يكشف تفاصيل سجل حساس.
احتفظ بجدول الصلاحيات ضمن وثائق المشروع وراجعه عند إضافة دور أو خدمة مدفوعة أو نوع بيانات جديد. بذلك يستطيع صاحب النشاط فهم القواعد، والمطور تنفيذها، والمسؤول عن الجودة التحقق منها دون تخمين.
أسئلة شائعة
هل التحقق من الهوية يمنح صلاحية إدارة؟
لا. التحقق من الحساب وصلاحية الإدارة قراران مختلفان. يجب أن تعين الشركة الحق الإداري صراحة وأن تمنعه عند عدم توافر شروطه.
هل حقل الدفع في بيانات المستخدم يكفي لفتح الخدمة؟
لا إذا كان المستخدم يستطيع تعديله. يلزم قرار استحقاق يعتمد على تحقق موثوق من الدفع، خارج البيانات التي يتحكم فيها العميل.