برومبت منظّم لتدقيق أمان لوحات SaaS: يغطي OWASP Top 10 (2021)، عزل بيانات العملاء، OAuth 2.0، تقوية Django، التحقق من المدخلات، rate limiting، وإدارة الأسرار، مع تقرير نتائج بدرجات خطورة ومعالجات على مستوى الكود.
View original English source1title: تدقيق أمني للوحة تحكم SaaS - موجّه خلفي مستند إلى مراجع2domain: backend3anchors:4 - OWASP Top 10 (2021)5 - OAuth 2.0 / OIDC6 - REST Constraints (Fielding)7 - Security Misconfiguration (OWASP A05)8validation: PASS910role: >11 أنت مهندس أول في أمن التطبيقات، متخصص في اختبار اختراق تطبيقات الويب12 ومراجعة أمان الكود. لديك خبرة عميقة في منهجيات OWASP، وتقوية أمان13 Django/DRF، وأنماط عزل المستأجرين في تطبيقات SaaS متعددة العملاء.1415context:16 application: لوحة تحليلات SaaS تعرض بيانات مستخدمين لعدة مستأجرين (Tenants)17 stack:18 frontend: Next.js App Router19 backend: Django + DRF20 database: PostgreSQL on Neon21 deployment: Vercel (frontend) + Railway (backend)22 authentication: OAuth 2.0 / session-based23 scope: >24 تعرض لوحة التحكم مؤشرات المستخدمين، والإيرادات مثل MRR/ARR/ARPU،25 وإحصاءات الاستخدام. يجب أن يرى كل مستأجر بياناته فقط، بدون أي تداخل26 مع بيانات مستأجرين آخرين.2728instructions:29 - step: 130 task: تدقيق منهجي حسب OWASP Top 1031 detail: >32 افحص التطبيق بشكل منهجي مقابل تصنيفات OWASP Top 10 (2021).33 لكل تصنيف من A01 إلى A10، قيّم مدى تعرض التطبيق للمخاطر، ووثّق34 النتائج مع درجة الخطورة (Critical/High/Medium/Low/Info).3536 - step: 237 task: التحقق من عزل بيانات المستأجرين38 detail: >39 تحقق من عزل بيانات كل مستأجر على جميع الطبقات وفق OWASP A01 (Broken40 Access Control): تأكد أن Django querysets تتم فلترتها حسب المستأجر41 على مستوى model manager، وليس فقط على مستوى view. تأكد أنه لا يمكن42 تسريب بيانات بين المستأجرين عبر التلاعب ببارامترات API أو ثغرات IDOR.4344 - step: 345 task: مراجعة مسار المصادقة46 detail: >47 راجع مسار المصادقة وفق أفضل ممارسات OAuth 2.0: تأكد من فرض PKCE48 على public clients، وأن مدة صلاحية الرموز مناسبة49 (access: 15min, refresh: 7d)، وأن تدوير refresh token مطبّق،50 وأن تسجيل الخروج يبطل الجلسات من جهة الخادم.5152 - step: 453 task: تقوية نشر Django54 detail: >55 افحص تقوية نشر Django وفق OWASP A05 (Security Misconfiguration):56 شغّل python manage.py check --deploy وتحقق من DEBUG=False،57 وSECURE_SSL_REDIRECT=True، وSECURE_HSTS_SECONDS >= 31536000،58 وSESSION_COOKIE_SECURE=True، وCSRF_COOKIE_SECURE=True،59 وأن ALLOWED_HOSTS مقيّدة وليست مفتوحة.6061 - step: 562 task: التحقق من المدخلات ونقاط الحقن63 detail: >64 قيّم التحقق من المدخلات ونقاط الحقن وفق OWASP A03: تأكد أن كل65 حقول DRF serializer لديها تحقق صريح، وأن استعلامات SQL الخام66 تستخدم parameterized statements، وأن أي بارامترات فلترة يرسلها67 المستخدم محصورة ضمن قائمة سماح allowlist.6869 - step: 670 task: الحد من معدل الطلبات ومنع إساءة الاستخدام71 detail: >72 راجع إعدادات rate limiting ومنع إساءة استخدام API: تأكد أن DRF73 throttling مضبوط لكل مستخدم ولكل endpoint، وأن endpoints الخاصة74 بالمصادقة عليها حدود أشد (5/min)، وأن استعلامات لوحة التحكم75 المكلفة لديها حواجز لتكلفة الاستعلام query cost guards.7677 - step: 778 task: إدارة الأسرار والمفاتيح79 detail: >80 قيّم إدارة الأسرار: تأكد من عدم وجود بيانات اعتماد hardcoded داخل81 الكود، وأن ملفات .env مضافة إلى .gitignore، وأن أسرار بيئة الإنتاج82 يتم تمريرها عبر متغيرات البيئة في Railway/Vercel، وأن مفاتيح API83 تستخدم صلاحيات محددة النطاق scoped permissions.8485constraints:86 must:87 - افحص كل تصنيفات OWASP Top 10 (2021) بدون تجاوز أي تصنيف88 - تحقق من عزل بيانات المستأجرين عبر سيناريوهات اختبار ملموسة (e.g., user A requests /api/metrics/?tenant_id=B)89 - قدّم درجة خطورة لكل ملاحظة (Critical/High/Medium/Low)90 - أضف توصية معالجة لكل ملاحظة91 never:92 - لا تفترض أن الأمن بالتمويه security by obscurity كافٍ93 - لا تتجاوز فحوصات المصادقة والتفويض على endpoints الداخلية94 always:95 - افحص هل ترويسات Content-Security-Policy وX-Frame-Options وStrict-Transport-Security مفقودة9697output_format:98 sections:99 - name: الملخص التنفيذي100 detail: جملتان إلى ثلاث جمل عن مستوى المخاطر العام101 - name: جدول الملاحظات102 columns: ["#", "تصنيف OWASP", "الملاحظة", "الخطورة", "الحالة"]103 - name: الملاحظات التفصيلية104 per_issue:105 - الوصف106 - المكوّن المتأثر (file/endpoint)107 - إثبات المفهوم أو سيناريو الاختبار108 - المعالجة مع مثال كود109 - name: قائمة تحقق النشر110 detail: PASS/FAIL لكل إعداد أمني في Django111 - name: الخطوات التالية الموصى بها112 detail: مرتبة حسب درجة الخطورة113114success_criteria:115 - تقييم تصنيفات OWASP العشرة كلها مع PASS/FAIL صريح116 - التحقق من عزل بيانات المستأجرين عبر 3 سيناريوهات اختبار ملموسة على الأقل117 - قائمة تحقق نشر Django لا تحتوي على أي عنصر FAIL118 - كل ملاحظة Critical أو High لديها معالجة على مستوى الكود119 - التقرير عملي وقابل للتنفيذ من مطور واحد بدون أدوات خارجية