Update: 2026-06-16 17:47:17
This commit is contained in:
333
SECURITY_AUDIT_CHECKLIST_AR.md
Normal file
333
SECURITY_AUDIT_CHECKLIST_AR.md
Normal file
@@ -0,0 +1,333 @@
|
||||
<div dir="rtl">
|
||||
|
||||
# قائمة مراجعة أمان سيرو - التحقق من النشر
|
||||
|
||||
**تاريخ المراجعة:** 16 يونيو 2026
|
||||
**نطاق القائمة:** جميع أنظمة سيرو
|
||||
**الغرض:** التحقق من تطبيق جميع إصلاحات الأمان
|
||||
|
||||
---
|
||||
|
||||
## الجزء 1: إصلاحات الأمان الحرجة (يجب أن تكتمل قبل النشر)
|
||||
|
||||
### ✅ إصلاح تشفير IV الثابت
|
||||
|
||||
- [ ] تم تعديل `backend/encrypt_decrypt.php` لتوليد IV عشوائي
|
||||
- [ ] تم التحقق من توليد IV بـ 16 بايت عشوائية
|
||||
- [ ] يتم ضمّ IV مع النص المشفر قبل base64_encode
|
||||
- [ ] تم اختبار الفك (نفس النص الواضح ينتج نصوص مشفرة مختلفة)
|
||||
- [ ] تم إعادة تشفير جميع البيانات الموجودة في قاعدة البيانات
|
||||
- [ ] تم التحقق من أن جميع الأرقام المشفرة مختلفة الآن
|
||||
- [ ] تم تسجيل عملية الترحيل الكاملة
|
||||
- [ ] تم إجراء نسخة احتياطية قبل الترحيل
|
||||
|
||||
### ✅ تأمين نقاط نهاية محفظة الدفع
|
||||
|
||||
- [ ] تم تعطيل `add.php` حتى يتم الإصلاح النهائي
|
||||
- [ ] تم إضافة مصادقة JWT إلى `add.php`
|
||||
- [ ] تم إضافة فحص التفويض (مسؤول فقط)
|
||||
- [ ] تم إضافة تحديد السرعة (حد أقصى للمعاملات)
|
||||
- [ ] تم إضافة التحقق من المبلغ (1-10,000 فقط)
|
||||
- [ ] تم إضافة تسجيل التدقيق للمعاملات
|
||||
- [ ] تم اختبار الرفض للمستخدمين غير المصرح لهم
|
||||
- [ ] تم تعطيل `addFromAdmin.php` حتى يتم الإصلاح النهائي
|
||||
- [ ] تم إضافة مصادقة JWT إلى `addFromAdmin.php`
|
||||
- [ ] تم استبدال مفتاح API الثابت بـ JWT
|
||||
|
||||
### ✅ نشر نقاط نهاية HTTPS آمنة فقط
|
||||
|
||||
- [ ] تم استبدال نقاط نهاية HTTP بـ HTTPS في `functions.php`
|
||||
- [ ] تم إضافة تثبيت الشهادة (Certificate Pinning)
|
||||
- [ ] تم اختبار الاتصال عبر HTTPS
|
||||
- [ ] تم التحقق من أن اتصالات HTTP مرفوضة
|
||||
- [ ] تم تحديث تطبيقات الهاتف لاستخدام HTTPS فقط
|
||||
|
||||
---
|
||||
|
||||
## الجزء 2: تحديثات المصادقة والمصادقة
|
||||
|
||||
### ✅ تطبيق المصادقة متعددة العوامل (MFA)
|
||||
|
||||
- [ ] تم إضافة التحقق من بصمة الجهاز (الحالي)
|
||||
- [ ] تم إضافة التحقق من OTP عبر SMS
|
||||
- [ ] تم إضافة رموز الخادم
|
||||
- [ ] تم تكوين حد أدنى من عاملين للمصادقة
|
||||
- [ ] تم اختبار مسار تسجيل دخول MFA كاملاً
|
||||
- [ ] تم اختبار فشل المصادقة بعامل واحد فقط
|
||||
- [ ] تم إنشاء سجلات MFA للتدقيق
|
||||
|
||||
### ✅ إصلاح توليد كلمات المرور
|
||||
|
||||
- [ ] تم تغيير توليد كلمات المرور من البريد الإلكتروني إلى عشوائية
|
||||
- [ ] تم التحقق من توليد كلمات مرور عشوائية قوية (32 حرف+)
|
||||
- [ ] تم إضافة إرسال كلمات المرور عبر SMS/البريد الآمن
|
||||
- [ ] تم فرض تغيير كلمة المرور عند أول تسجيل دخول
|
||||
- [ ] تم اختبار تسجيل دخول أول مرة
|
||||
- [ ] تم إنشاء سياسة كلمات مرور قوية (14+ حرف، أحرف كبيرة/صغيرة/أرقام/رموز)
|
||||
|
||||
### ✅ تأمين رموز JWT
|
||||
|
||||
- [ ] تم التحقق من أن جميع رموز JWT لها انتهاء صلاحية
|
||||
- [ ] تم تعيين فترة انتهاء الصلاحية إلى ساعة واحدة (توازن الأمان)
|
||||
- [ ] تم تطبيق رموز التحديث (refresh tokens) مع انتهاء صلاحية لأطول مدة
|
||||
- [ ] تم التحقق من توقيع JWT على الخادم
|
||||
- [ ] تم اختبار رفض الرموز المنتهية الصلاحية
|
||||
- [ ] تم اختبار رفض الرموز المعدلة
|
||||
|
||||
---
|
||||
|
||||
## الجزء 3: تأمين قاعدة البيانات
|
||||
|
||||
### ✅ اختبار SQL Injection
|
||||
|
||||
- [ ] تم تدقيق جميع استعلامات SQL في `functions.php`
|
||||
- [ ] تم تدقيق جميع استعلامات SQL في ملفات `auth/`
|
||||
- [ ] تم تدقيق جميع استعلامات SQL في ملفات `ride/`
|
||||
- [ ] تم استبدال جميع الاستعلامات بالاستعدادات (Prepared Statements)
|
||||
- [ ] تم اختبار UNION injection - النتيجة: فشل الهجوم ✓
|
||||
- [ ] تم اختبار Boolean injection - النتيجة: فشل الهجوم ✓
|
||||
- [ ] تم اختبار Time-based injection - النتيجة: لا يوجد تأخير ✓
|
||||
- [ ] تم اختبار Error-based injection - النتيجة: بدون أخطاء قاعدة بيانات ✓
|
||||
|
||||
### ✅ تحديد السرعة على قاعدة البيانات
|
||||
|
||||
- [ ] تم تطبيق تحديد السرعة على استعلامات البحث
|
||||
- [ ] تم تطبيق تحديد السرعة على استعلامات التحديث
|
||||
- [ ] تم التحقق من أن الاستعلامات المفرطة مرفوضة
|
||||
- [ ] تم إنشاء سجلات محاولات تجاوز تحديد السرعة
|
||||
|
||||
### ✅ نسخ احتياطي وإعادة كارثة
|
||||
|
||||
- [ ] تم إعداد النسخ الاحتياطية اليومية
|
||||
- [ ] تم اختبار استعادة من نسخة احتياطية
|
||||
- [ ] تم التحقق من سرية النسخ الاحتياطية (تشفيرها)
|
||||
- [ ] تم إعداد خطة استعادة الكارثة
|
||||
- [ ] تم توثيق نقاط استعادة RTO/RPO
|
||||
|
||||
---
|
||||
|
||||
## الجزء 4: أمان التطبيقات المحمولة
|
||||
|
||||
### ✅ تقليل الأذونات (Android)
|
||||
|
||||
- [ ] تم تقليل `ACCESS_BACKGROUND_LOCATION` إلى `ACCESS_FINE_LOCATION` فقط
|
||||
- [ ] تم إزالة `WRITE_EXTERNAL_STORAGE` إذا لم تكن مطلوبة
|
||||
- [ ] تم إزالة `SYSTEM_ALERT_WINDOW` إذا لم تكن مطلوبة
|
||||
- [ ] تم التحقق من طلب الأذونات في وقت التشغيل فقط
|
||||
- [ ] تم إضافة تبريرات المستخدم لكل أذن
|
||||
|
||||
### ✅ تحديثات المكتبات
|
||||
|
||||
- [ ] تم تحديث `http` من 1.2.2 إلى أحدث إصدار (2.0+)
|
||||
- [ ] تم تحديث `firebase_core` إلى آخر إصدار مستقر
|
||||
- [ ] تم تحديث `encrypt` إلى آخر إصدار
|
||||
- [ ] تم تحديث `webview_flutter` إلى آخر إصدار
|
||||
- [ ] تم فحص جميع المكتبات الأخرى للثغرات (pub.dev)
|
||||
- [ ] تم اختبار التطبيق بعد التحديثات
|
||||
|
||||
### ✅ تثبيت الشهادة في تطبيقات Flutter
|
||||
|
||||
- [ ] تم الحصول على شهادة الخادم الصحيحة
|
||||
- [ ] تم حساب hash SHA-256 للشهادة
|
||||
- [ ] تم تطبيق Certificate Pinning في الكود
|
||||
- [ ] تم اختبار الاتصال - النجاح ✓
|
||||
- [ ] تم اختبار شهادة وهمية - الفشل ✓
|
||||
|
||||
### ✅ إزالة رموز التصحيح
|
||||
|
||||
- [ ] تم إزالة `print()` و `debugPrint()` من رمز الإنتاج
|
||||
- [ ] تم التحقق من عدم وجود `debugMode = true`
|
||||
- [ ] تم إزالة رموز التطوير/الاختبار المؤقتة
|
||||
- [ ] تم إزالة معلومات الخادم الحساسة من الثوابت
|
||||
|
||||
---
|
||||
|
||||
## الجزء 5: الأمان في التطبيق الويب
|
||||
|
||||
### ✅ رؤوس الأمان
|
||||
|
||||
- [ ] تم تطبيق `Strict-Transport-Security` (HSTS)
|
||||
- [ ] تم تطبيق `X-Frame-Options: DENY`
|
||||
- [ ] تم تطبيق `X-Content-Type-Options: nosniff`
|
||||
- [ ] تم تطبيق `Content-Security-Policy`
|
||||
- [ ] تم تطبيق `X-XSS-Protection: 1; mode=block`
|
||||
- [ ] تم تطبيق `Referrer-Policy: strict-origin-when-cross-origin`
|
||||
|
||||
### ✅ حماية CSRF
|
||||
|
||||
- [ ] تم تطبيق رموز CSRF على جميع نماذج POST
|
||||
- [ ] تم التحقق من رموز CSRF على جميع نقاط النهاية
|
||||
- [ ] تم اختبار هجوم CSRF - النتيجة: فشل الهجوم ✓
|
||||
|
||||
### ✅ معالجة الأخطاء الآمنة
|
||||
|
||||
- [ ] تم التحقق من عدم إظهار تتبع المكدس في الإنتاج
|
||||
- [ ] تم عدم الكشف عن أسماء الجداول/الأعمدة في الأخطاء
|
||||
- [ ] تم عدم الكشف عن الإصدارات/المكتبات المستخدمة
|
||||
- [ ] تم إنشاء صفحات خطأ عامة (404, 500, etc.)
|
||||
|
||||
---
|
||||
|
||||
## الجزء 6: إدارة الأسرار
|
||||
|
||||
### ✅ متغيرات البيئة
|
||||
|
||||
- [ ] تم إنشاء ملف `.env` آمن
|
||||
- [ ] تم إضافة `.env` إلى `.gitignore`
|
||||
- [ ] تم التحقق من عدم اختيار `.env` في المستودع
|
||||
- [ ] تم استخدام `load_env.php` بشكل صحيح
|
||||
- [ ] تم تشفير حساسية متغيرات البيئة
|
||||
|
||||
### ✅ مفاتيح التشفير
|
||||
|
||||
- [ ] تم تخزين مفاتيح التشفير في `.env` أو نظام إدارة الأسرار
|
||||
- [ ] تم عدم وضع مفاتيح في الرمز المصدري
|
||||
- [ ] تم تدوير مفاتيح التشفير (تحديثها بانتظام)
|
||||
- [ ] تم إنشاء نسخ احتياطية آمنة من المفاتيح
|
||||
|
||||
### ✅ مفاتيح API
|
||||
|
||||
- [ ] تم تطبيق Scopes على مفاتيح API (أذونات محدودة)
|
||||
- [ ] تم تحديد عمر مفاتيح API
|
||||
- [ ] تم إضافة تدوير مفاتيح API
|
||||
- [ ] تم حذف المفاتيح القديمة غير المستخدمة
|
||||
- [ ] تم تسجيل مفاتيح API المستخدمة
|
||||
|
||||
---
|
||||
|
||||
## الجزء 7: المراقبة والتسجيل
|
||||
|
||||
### ✅ تسجيل التدقيق
|
||||
|
||||
- [ ] تم تسجيل جميع محاولات تسجيل الدخول
|
||||
- [ ] تم تسجيل جميع تغييرات المحفظة
|
||||
- [ ] تم تسجيل جميع محاولات الوصول غير المصرح
|
||||
- [ ] تم تسجيل جميع تعديلات الحساب
|
||||
- [ ] تم حماية سجلات التدقيق من التلاعب
|
||||
|
||||
### ✅ المراقبة والإنذارات
|
||||
|
||||
- [ ] تم إعداد تنبيهات لمحاولات تسجيل دخول متعددة
|
||||
- [ ] تم إعداد تنبيهات لمعاملات مريبة
|
||||
- [ ] تم إعداد تنبيهات لرفع أخطاء SQL
|
||||
- [ ] تم إعداد تنبيهات لانتهاكات تحديد السرعة
|
||||
- [ ] تم إنشاء لوحة معلومات للمراقبة
|
||||
|
||||
---
|
||||
|
||||
## الجزء 8: الامتثال والتوثيق
|
||||
|
||||
### ✅ سياسات الخصوصية
|
||||
|
||||
- [ ] تم مراجعة سياسة الخصوصية الحالية
|
||||
- [ ] تم تحديثها لتعكس ممارسات الأمان الجديدة
|
||||
- [ ] تم إضافة معلومات الاحتفاظ بالبيانات
|
||||
- [ ] تم إضافة حقوق المستخدم (GDPR/CCPA)
|
||||
- [ ] تم إضافة معلومات الاتصال (DPO)
|
||||
|
||||
### ✅ شروط الخدمة
|
||||
|
||||
- [ ] تم تحديث شروط الخدمة
|
||||
- [ ] تم إضافة شرط أمان المحفظة
|
||||
- [ ] تم إضافة مسؤولية المستخدم عن كلمات المرور
|
||||
- [ ] تم إضافة إخلاء المسؤولية عن MFA
|
||||
|
||||
### ✅ التوثيق
|
||||
|
||||
- [ ] تم توثيق جميع إصلاحات الأمان
|
||||
- [ ] تم توثيق إجراءات التشغيل (Runbooks)
|
||||
- [ ] تم توثيق خطة الاستجابة على الحوادث
|
||||
- [ ] تم توثيق سياسة الكشف عن الثغرات
|
||||
|
||||
---
|
||||
|
||||
## الجزء 9: اختبار نهائي شامل
|
||||
|
||||
### ✅ اختبار الأمان قبل النشر
|
||||
|
||||
- [ ] تم إجراء مسح ثابت بـ Semgrep على جميع الملفات
|
||||
- [ ] تم إجراء فحص ديناميكي بـ Burp Suite
|
||||
- [ ] تم اختبار OWASP Top 10 (تعطل جميع الاختبارات)
|
||||
- [ ] تم اختبار الأداء (بدون اختناقات أمنية جديدة)
|
||||
- [ ] تم اختبار الاستعادة من الفشل
|
||||
|
||||
### ✅ اختبار الانحدار
|
||||
|
||||
- [ ] تم اختبار جميع ميزات تسجيل الدخول
|
||||
- [ ] تم اختبار جميع ميزات المحفظة
|
||||
- [ ] تم اختبار جميع ميزات الركوب
|
||||
- [ ] تم اختبار جميع واجهات برمجية API
|
||||
- [ ] تم اختبار تطبيقات الهاتف على أجهزة متعددة
|
||||
|
||||
### ✅ اختبار الأداء
|
||||
|
||||
- [ ] تم قياس وقت استجابة API (هدف: <100 مللي ثانية)
|
||||
- [ ] تم قياس الحمل على المحفظة (هدف: 1000+ معاملة/ثانية)
|
||||
- [ ] تم قياس استهلاك الذاكرة (بدون تسرب)
|
||||
- [ ] تم اختبار مع 10,000+ مستخدم متزامن
|
||||
|
||||
---
|
||||
|
||||
## الجزء 10: خطة ما بعد النشر
|
||||
|
||||
### ✅ المرحلة 1: الساعات الأولى
|
||||
|
||||
- [ ] تم مراقبة السجلات في الوقت الفعلي
|
||||
- [ ] تم مراقبة الأخطاء في الوقت الفعلي
|
||||
- [ ] تم مراقبة الأداء في الوقت الفعلي
|
||||
- [ ] تم تعيين فريق للتعامل مع الحوادث
|
||||
- [ ] تم التحضير للعودة إلى الإصدار السابق إذا لزم الأمر
|
||||
|
||||
### ✅ المرحلة 2: اليوم الأول
|
||||
|
||||
- [ ] تم التحقق من عدم وجود أخطاء أمنية في السجلات
|
||||
- [ ] تم التحقق من عدم وجود انتهاكات محاولة
|
||||
- [ ] تم التحقق من الأداء مقبولة
|
||||
- [ ] تم تعطيل النسخة السابقة إذا كانت تشغل الإنتاج
|
||||
- [ ] تم إنشاء تقرير ما بعد النشر
|
||||
|
||||
### ✅ المرحلة 3: الأسبوع الأول
|
||||
|
||||
- [ ] تم مراجعة جميع السجلات
|
||||
- [ ] تم تحليل أي مشاكل حدثت
|
||||
- [ ] تم إنشاء خطة لمعالجة المشاكل
|
||||
- [ ] تم التحقق من الامتثال التنظيمي
|
||||
- [ ] تم إصدار بيان الأمان للمستخدمين (اختياري)
|
||||
|
||||
---
|
||||
|
||||
## ملخص حالة الإصلاح
|
||||
|
||||
**يتطلب قبل النشر (حرج - يجب أن تكون 100%):**
|
||||
- [ ] الجزء 1: ✓ (إصلاحات حرجة)
|
||||
- [ ] الجزء 2: ✓ (مصادقة)
|
||||
- [ ] الجزء 3: ✓ (قاعدة البيانات)
|
||||
|
||||
**مطلوب قبل النشر (عالي - يجب أن يكون 90%+):**
|
||||
- [ ] الجزء 4: ✓ (الهاتف المحمول)
|
||||
- [ ] الجزء 5: ✓ (الويب)
|
||||
- [ ] الجزء 6: ✓ (الأسرار)
|
||||
|
||||
**قبل إعلان الإصدار (متوسط - يجب أن يكون 80%+):**
|
||||
- [ ] الجزء 7: ✓ (المراقبة)
|
||||
- [ ] الجزء 8: ✓ (الامتثال)
|
||||
- [ ] الجزء 9: ✓ (الاختبار)
|
||||
- [ ] الجزء 10: ✓ (ما بعد النشر)
|
||||
|
||||
---
|
||||
|
||||
## التوقيع والموافقة
|
||||
|
||||
**معد البقائمة:** ________________ **التاريخ:** __________
|
||||
|
||||
**راجع من قِبل:** ________________ **التاريخ:** __________
|
||||
|
||||
**موافقة الأمان:** ________________ **التاريخ:** __________
|
||||
|
||||
**موافقة المشروع:** ________________ **التاريخ:** __________
|
||||
|
||||
---
|
||||
|
||||
**ملحوظة:** يجب أكمال جميع المربعات المعلمة قبل نشر أي تغييرات للإنتاج.
|
||||
|
||||
</div>
|
||||
Reference in New Issue
Block a user