Skip to content

نظرة عامة على الأمان — نظام إدارة المغسلة

معلومات الوثيقة

الحقل القيمة
المشروع نظام إدارة المغسلة
الإصدار 1.0
اللغة العربية
نوع الوثيقة نظرة عامة على الأمان

1. معمارية الأمان

┌──────────────────────────────────────────────────────┐
│                   طبقات الأمان                         │
│                                                      │
│  أمان التطبيق: JWT, BCrypt, أدوار وصلاحيات، تحقق       │
│  حماية البيانات: AES-256, تشفير ملفات، تخزين مشفر      │
│  الترخيص ومكافحة السرقة: بصمة عتادية، منع المتصفح      │
│  الشبكة وDocker: منافذ داخلية، TLS، عزل الحاويات        │
│  التدقيق والمراقبة: سجل تدقيق، Seq، فحوصات صحة         │
└──────────────────────────────────────────────────────┘

2. أمان التطبيق

المصادقة

  • تشفير كلمات المرور: BCrypt (عامل 12)
  • سياسة كلمة المرور: 8 أحرف كحد أدنى، حرف كبير، رقم، رمز خاص
  • الرموز: JWT (HMAC-SHA256)، صلاحية 8 ساعات
  • تحديد المعدل: 5 محاولات/دقيقة لكل IP

التفويض

  • 3 أدوار: مدير، استقبال، محاسب (مصفوفة الصلاحيات)
  • مرشح صلاحيات على كل نقطة API
  • حارس مسارات في الواجهة + توجيه hasPermission

التحقق من المدخلات

  • FluentValidation على جميع الطلبات
  • استعلامات معلمية (EF Core + Dapper) — لا دمج نصي خام
  • Angular يعقم القوالب تلقائياً — لا innerHTML بدون DomSanitizer
  • CSRF غير قابل للتطبيق — JWT في رأس Authorization

حماية API

  • تعيين إصدارات API (Asp.Versioning.Mvc)
  • CORS مقيد بالنطاق المعروف و localhost
  • إخفاء الأخطاء: 500 ترجع رسالة عامة فقط في الإنتاج
  • Swagger معطل في الإنتاج

3. حماية البيانات

التشفير عند السكون

البيانات الحماية
ملفات PostgreSQL تشفير نظام الملفات (BitLocker/LUKS)
النسخ الاحتياطية AES-256-CBC
ملفات المزامنة (.lndsync) ZIP مشفر بـ AES-256-CBC
license.dat AES-256-GCM
سجلات Seq مخزنة على نظام ملفات مشفر

التشفير أثناء النقل

الاتصال الحماية
متصفح ↔ Traefik TLS 1.3 (Let's Encrypt أو mkcert)
Traefik ↔ API شبكة Docker داخلية
API ↔ PostgreSQL شبكة Docker داخلية

4. الترخيص ومكافحة السرقة

القلق الحماية
نسخ التطبيق لجهاز آخر بصمة عتادية. تطابق جزئي (≥2/4) ← تحذير. عدم تطابق ← منع.
استخدام التطبيق بعد انتهاء الترخيص 7 أيام سماح. اليوم 8 ← قراءة فقط.
فتح التطبيق في المتصفح ClientTokenMiddleware — يرفض بدون رأس X-Laundry-Client-Token
العبث بـ license.dat AES-256-GCM. أي تعديل ← فشل فك التشفير.
التلاعب بالساعة النظام يسجل آخر طابع زمني. التراجع للوراء ← تحذير.

5. أمان الشبكة وDocker

  • منفذ PostgreSQL داخلي فقط — غير معرض للمضيف
  • Seq: محمي بـ Traefik+HTTPS للمتصلة. محلي فقط (localhost:5341) لغير المتصلة
  • مقبس Docker: للقراءة فقط ومثبت لـ Traefik فقط
  • الحاويات تشغل كمستخدمين غير جذريين

أمان نظام التشغيل المضيف

  • جدار ناري: فقط المنافذ 80, 443, و 22 (SSH)
  • SSH: مفتاح فقط، بدون كلمة مرور
  • تحديثات أمان تلقائية للنظام

6. التدقيق والمراقبة

سجل التدقيق

كل إنشاء وتعديل وحذف وتغيير حالة يسجل:

audit_logs (id, entity_type, entity_id, action, user_id, timestamp, old_value JSONB, new_value JSONB, branch_id)
  • للإلحاق فقط. لا يمكن تعديله أو حذفه.
  • المدير فقط يطلع عليه.
  • يشمل: تجاوزات الأسعار، الخصومات اليدوية، تغييرات الصلاحيات.

المراقبة

الأداة ما تراقبه
Seq أخطاء API، أحداث محاسبية، مزامنة، مصادقة، صحة Docker
فحوصات الصحة اتصال PostgreSQL، اتصال Traefik، اتصال Seq
مقاييس .NET معدل الطلبات، الأخطاء، الذاكرة
OpenTelemetry تتبع الطلبات

7. أفضل الممارسات للمدراء

  • استخدم كلمة مرور DB قوية (32 حرفاً عشوائياً)
  • شفر قرص المضيف (BitLocker/LUKS)
  • احتفظ بنسخ احتياطية منتظمة مشفرة
  • حدث صور Docker بانتظام
  • قيد وصول SSH (مفتاح فقط)
  • راجع سجل التدقيق شهرياً
  • أمن ملف license.dat (صلاحيات مقيدة)
  • لا تشارك بيانات اعتماد المدير
  • قيد وصول Seq للعناوين المسموحة فقط

سجل المراجعة

التاريخ الإصدار المعد التغييرات
2026-05-10 1.0 مهندس الأمان الإصدار الأولي لنظرة عامة على الأمان