تخطَّ إلى المحتوى
ARAB CODEمجتمع المطورين العرب

سجل التعديلات

العودة إلى المقال

الفرق مقارنةً بالنسخة السابقة

+ **التفويض** يقرر ما يحق للمستخدم **المصادَق** فعله. ضعف التحكم بالوصول (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`.
  1. معتمدالنسخة الحاليةفريق عرب كودرسمي

    مقال مرجعي رسمي من فريق عرب كود

    ملاحظة المراجعة: Approved for publication: site owner written instruction 2026-10-24 (final completion directive: populate the wiki via the official editorial identity)