سجل التعديلات
الفرق مقارنةً بالنسخة السابقة
+ **التفويض** يقرر ما يحق للمستخدم **المصادَق** فعله. ضعف التحكم بالوصول (Broken Access Control) يتصدر قائمة OWASP Top 10 لعام 2021.+ ## المبادئ++ - **الرفض افتراضياً**: كل عملية ممنوعة ما لم يُسمح بها صراحة.+ - **أقل صلاحية**: امنح كل دور ما يحتاجه فقط.+ - **التحقق على الخادم في كل طلب**: إخفاء زر في الواجهة ليس حماية؛ يمكن إرسال الطلب مباشرة.++ ## نماذج شائعة++ **التحكم المبني على الأدوار (RBAC):** الصلاحيات تُمنح لأدوار، والمستخدمون يُعطون أدواراً.++ ```ts+ const ROLE_PERMISSIONS = {+ member: ['post.create'],+ moderator: ['post.create', 'post.hide'],+ admin: ['post.create', 'post.hide', 'user.ban'],+ } as const;+ ```++ **التحقق من الملكية:** كثير من القواعد تعتمد على المورد نفسه، لا على الدور فقط:++ ```ts+ function canEditPost(user: User, post: Post) {+ return post.authorId === user.id || hasPermission(user, 'post.hide');+ }+ ```++ ## IDOR: الثغرة الأكثر شيوعاً++ ```+ GET /api/invoices/1043+ ```++ إذا أعاد الخادم الفاتورة لأي مستخدم مسجّل لمجرد معرفة رقمها، فهذه ثغرة **IDOR** (Insecure Direct Object Reference). الحل: قيّد الاستعلام بالمالك.++ ```sql+ SELECT * FROM invoices WHERE id = $1 AND user_id = $2;+ ```++ ## أخطاء شائعة++ - الاعتماد على حقول يرسلها العميل مثل `role` أو `isAdmin` في جسم الطلب.+ - التحقق في صفحة العرض ونسيانه في واجهة API التي تنفذ العملية.+ - رسائل تكشف وجود مورد لا يملكه المستخدم؛ الأسلم إرجاع `404`.
مقال مرجعي رسمي من فريق عرب كود
ملاحظة المراجعة: Approved for publication: site owner written instruction 2026-10-24 (final completion directive: populate the wiki via the official editorial identity)