الأمان، التحقق الصارم، وتحديد معدل الطلبات (Rate Limiting)
حماية شاملة للمتجر ضد هجمات حجب الخدمة (DDoS)، والطلبات العشوائية، والتلاعب ببيانات الدفع عبر خوارزميات متقدمة تعتمد على Redis.
1. معمارية تحديد معدل الطلبات بـ Redis
يتم فحص عدد الطلبات القادمة من كل عنوان IP بشكل فوري عبر خوارزمية النافذة المنزلقة (Sliding Window) المخزنة في ذاكرة Redis فائقة السرعة دون أي تأخير.
- مسارات API الحساسة: تقييد طلبات الدفع والمصادقة بحد أقصى 5 طلبات في الدقيقة لمنع التخمين.
- مسارات التصفح العامة: حد مرن يسمح بتصفح المنتجات والبحث السريع بسلاسة تامة.
2. تكوين قواعد الحماية وجدار الحماية Caddy
يعمل خادم Caddy كخط دفاع أول يمنع الهجمات الشائعة ويفرض شهادات SSL حديثة مع تشفير TLS 1.3 التلقائي.
حماية مسارات الدفع
أمان مصرفي صارم
عزل مسارات الدفع والتحقق المشفر من توقيعات الـ Webhook الواردة من بوابات الدفع.
فحص وتطهير المدخلات
مخططات Zod الصارمة
فحص كافة البيانات المدخلة في النماذج عبر Zod لمنع هجمات حقن SQL وXSS كلياً.
تطبيق Rate Limiting على مسارات API
typescript// ── OTP request: phone (POST /auth/customer/phone-auth) ───────────────{ method: "POST", matcher: "/auth/customer/phone-auth", middlewares: [ createRateLimitMiddleware({ maxAttempts: 3, windowMs: 60 * 60 * 1000, // 1 hour countOn: "success", // only count actual OTP sends message: "Too many OTP requests. Please try again later.", }), ],},// ── OTP register: phone ───────────────────────────────────────────────{ method: "POST", matcher: "/auth/customer/phone-register", middlewares: [ createRateLimitMiddleware({ maxAttempts: 5, windowMs: 30 * 60 * 1000, // 30 minutes countOn: "failure", // only penalize wrong codes message: "Too many failed attempts. Please try again later.", }), ],},الاستفادة من ذاكرة Redis السريعة
يتم تخزين حالة وعدد طلبات كل عنوان IP في ذاكرة Redis السريعة داخل حاوية Docker، مما يضمن معالجة ملايين الفحوصات في زمن استجابة صفري تقريباً.