المستنداتدليل المطورينالأمان والحد من معدل الطلبات (Security & Rate Limiting)

الأمان، التحقق الصارم، وتحديد معدل الطلبات (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، مما يضمن معالجة ملايين الفحوصات في زمن استجابة صفري تقريباً.