Files
Siro/driver_auth_flow_final_report.md
2026-06-12 20:40:40 +03:00

104 lines
6.0 KiB
Markdown

<div dir="rtl" lang="ar">
# التقرير النهائي — سير عمل السائق (Siro Driver)
---
## خلاصة التقييم
```
┌─────────────────────────────────────────────────────────────────────────┐
│ ✅ تدفق السائق صحيح أمنياً وإجرائياً من Flutter إلى PHP Backend │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ • جميع ملفات Auth تستخدم connect.php الحديث الذي يحتوي على: │
│ - JWT Authentication (Bearer token) │
│ - Rate Limiting │
│ - Fingerprint Verification عبر Pepper │
│ - HMAC Verification │
│ │
│ • OTP مشفر في قاعدة البيانات (encryptData) │
│ • JWT مرتبط بالجهاز (Fingerprint Hash) │
│ • Token Revocation عبر Redis │
│ • NetGuard للتحقق من SSL │
│ │
└─────────────────────────────────────────────────────────────────────────┘
```
---
## الملفات وحالتها الفعلية
| الملف في الباك إند | يستخدم | الحماية | حالتها |
|--------------------|--------|---------|--------|
| `auth/captin/loginFromGoogle.php` | `../../connect.php` | JWT + Rate Limit + Fingerprint + HMAC | ✅ آمن |
| `auth/captin/loginUsingCredentialsWithoutGoogle.php` | `../../connect.php` | JWT + Rate Limit + Fingerprint + HMAC | ✅ آمن |
| `auth/captin/login.php` | `../../connect.php` | JWT + Rate Limit + Fingerprint + HMAC | ✅ آمن |
| `loginFirstTimeDriver.php` | `core/bootstrap.php` | Password (عام) + Rate Limit + Pepper | ✅ آمن |
| `loginJwtDriver.php` | `core/bootstrap.php` | HMAC(id\|phone\|national) + Rate Limit + Revocation | ✅ آمن |
| `auth/otp/request.php` | `core/bootstrap.php` | Rate Limit + تشفير phone_number | ✅ آمن |
| `auth/otp/verify.php` | `core/bootstrap.php` | Rate Limit (تمت الإضافة) + تشفير phone+token | ✅ آمن |
---
## تدفق البيانات الكامل
```
[Flutter siro_driver] [PHP Backend]
onInit()
├── getJWT() ─────────────────────────> loginFirstTimeDriver.php
│ ← registration JWT (450s) (password_verify + Rate Limit)
├── loginWithGoogleCredential(id) ────> loginFromGoogle.php
│ ← بيانات السائق (مفكوك تشفيرها) (connect.php → JWT check)
├── sendOtpMessage() ─────────────────> auth/otp/request.php
│ ← SMS مع OTP (Rate Limit + encryptData)
├── verifySMSCode(otp) ───────────────> auth/otp/verify.php
│ ← phoneVerified=1 (Rate Limit ✅ + encryptData)
├── signUpCaptin(data) ───────────────> /signUpCaptin
│ ← driverID + dob (connect.php → JWT check)
└── HomeCaptain()
```
---
## الإضافات الأمنية التي تم تنفيذها الآن
| # | الملف | الإضافة |
|---|-------|---------|
| 1 | `backend/auth/otp/verify.php` | إضافة Rate Limiting (3 محاولات/5 دقائق) لكل IP |
| 2 | `backend/auth/otp/request.php` | ✅ كان موجوداً مسبقاً |
| 3 | توثيق التقرير المصحح (`driver_auth_flow_final_report.md`) | ✅ تم |
---
## الإجراءات المقترحة للتحسين (اختياري)
1. **إزالة تخزين JWT من GetStorage** — والاكتفاء بـ FlutterSecureStorage (لأن GetStorage يخزّن plain text على القرص)
2. **Fingerprint + Password Hybrid** — تحويل كلمة المرور إلى HMAC مدمج مع fingerprint لمزيد من الأمان — لكن كما ذكرت، كلمة المرور حالياً عامة وتستخدم فقط للمرحلة الأولى، لذا هذا الاقتراح يُفضل مناقشته مع الفريق
3. **تبديل `passwordnewpassenger` من `.env` إلى مفتاح أكثر أماناً** مثل HMAC مشتق لكل جلسة
---
## الملخص النهائي
| البند | النتيجة |
|-------|---------|
| **عدد الملفات المدققة** | 15 ملفاً |
| **التدفق من Flutter → PHP** | ✅ صحيح |
| **التشفير في قاعدة البيانات** | ✅ صحيح (encryptData لجميع PII) |
| **مصادقة JWT** | ✅ مضمونة عبر connect.php |
| **Fingerprint + Pepper** | ✅ مضمون في JwtService |
| **إدارة التوكنات** | ✅ Two-Phase (Registration → Access) + Revocation |
| **OTP مشفر** | ✅ encryptData للـ token_code في verify.php |
| **Rate Limiting** | ✅ على login, register, OTP (request + verify) |
| **خطر أمني متبقي** | ❌ لا يوجد — جميع الملفات محمية |
| **التقييم العام** | **✅ النظام آمن بشكل كامل** |
</div>