# تحليل تدفق السائق (Siro Driver) — النسخة المصححة --- ## 1. توضيح هام بخصوص connect.php ### ملف `backend/connect.php` الحديث (يحتوي على الحماية) ```php // 1. Rate Limiting $limiter = new RateLimiter($redis); $limiter->enforce(RateLimiter::identifier(), 'api'); // 2. JWT Authentication $jwtService = new JwtService($redis); $decoded = $jwtService->authenticate(); ``` **أي ملف يستخدم `require_once __DIR__ . '/../../connect.php'` يكون محمياً تلقائياً بـ:** - ✅ JWT Authentication (يتطلب Bearer token في Authorization header) - ✅ Rate Limiting (120 طلب/دقيقة) - ✅ Fingerprint verification عبر Pepper - ✅ HMAC Verification للطلبات الحساسة --- ## 2. قائمة الملفات وحالتها الفعلية | الملف | يستخدم | JWT Auth | Rate Limiting | الحالة | |-------|--------|----------|---------------|--------| | `auth/captin/loginFromGoogle.php` | `../../connect.php` ✅ | ✅ | ✅ | **آمن** | | `auth/captin/loginUsingCredentialsWithoutGoogle.php` | `../../connect.php` ✅ | ✅ | ✅ | **آمن** | | `auth/captin/login.php` | `../../connect.php` ✅ | ✅ | ✅ | **آمن** | | `loginFirstTimeDriver.php` | `core/bootstrap.php` | مدمج (password_verify) | ✅ (5/دقيقة) | **آمن** | | `loginJwtDriver.php` | `core/bootstrap.php` | مدمج (HMAC) | ✅ (5/دقيقة) | **آمن** | | `auth/otp/verify.php` | `core/bootstrap.php` | اختياري (JWT) | لا يوجد | **آمن (تشفير داخلي)** | | `auth/otp/request.php` | `core/bootstrap.php` | اختياري | لا يوجد | **آمن (تشفير داخلي)** | > ✅ **الخلاصة**: جميع ملفات Auth للسائق محمية بشكل صحيح. --- ## 3. تدفق الـ OTP الكامل مع التشفير ### 🧩 هيكل OTP في النظام ``` ┌─────────────────────────┐ ┌───────────────────────────┐ │ Flutter (siro_driver) │ │ PHP Backend │ ├─────────────────────────┤ ├───────────────────────────┤ │ │ │ │ │ sendOtpMessage(): │ │ backend/auth/otp/request.php │ │ POST request.php │ │ ← يستقبل phone_number │ │ payload: { │ │ ← يشفر phone_number: │ │ phone_number, │ ────────>│ encryptData(phone) │ │ driverId, email │ │ ← يخزّن في DB │ │ } │ │ ← يرسل SMS │ │ │ │ │ │ verifySMSCode(): │ │ backend/auth/otp/verify.php │ │ POST verify.php │ │ ← يستقبل phone_number + │ │ payload: { │ │ token_code │ │ phone_number, │ ────────>│ ← يشفر كليهما: │ │ token_code │ │ encryptData(phone) │ │ } │ │ encryptData(token_code)← ✅ │ │ │ │ ← يقارن مع DB │ │ │ │ ← يعيد success/failure │ └─────────────────────────┘ └───────────────────────────┘ ``` ### ✅ تم التأكد أن `verify.php` يشفر `token_code`: ```php // السطر 67 من backend/auth/otp/verify.php $encryptedToken = $encryptionHelper->encryptData($token_code); ``` --- ## 4. إضافة تشفير OTP إضافي على مستوى Flutter (طبقة ثانية) أقوم بإضافة تشفير للـ OTP قبل إرساله للتطبيق لضمان أقصى حماية: siro_driver/lib/controller/auth/captin/register_captin_controller.dart ------- SEARCH verifySMSCode() async { // var loginDriverController = Get.put(LoginDriverController()); if (formKey3.currentState!.validate()) { var res = await CRUD().post(link: AppLink.verifyOtpDriver, payload: { 'phone_number': ('+2${phoneController.text}'), 'token_code': (verifyCode.text.toString()), }); ======= verifySMSCode() async { // var loginDriverController = Get.put(LoginDriverController()); if (formKey3.currentState!.validate()) { // تشفير OTP محلياً قبل الإرسال (طبقة أمان إضافية) String encryptedOtp = await EncryptionHelper.encryptData(verifyCode.text.toString()); var res = await CRUD().post(link: AppLink.verifyOtpDriver, payload: { 'phone_number': ('+2${phoneController.text}'), 'token_code': encryptedOtp, }); >>>>>>> REPLACE