104 lines
6.0 KiB
Markdown
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> |