محدد المعدل للطلبات Rate Limiter في Kawkab JS
يتم استخدام Rate Limiter للتحكم في عدد الطلبات التي يمكن أن يرسلها العميل إلى الخادم في فترة زمنية محددة. يساعد ذلك على منع الهجمات مثل Denial of Service (DoS) ويحمي تطبيقك من الإفراط في استخدام الموارد بسبب الطلبات المفرطة من نفس العميل.
تكوين Rate Limiter
يمكنك تكوين إعدادات Rate Limiter من خلال ملف الإعدادات الرئيسي app/configuration.ts
. يوفر هذا الملف التحكم الكامل في عدد الطلبات المسموح بها والفترة الزمنية لكل عميل.
إعدادات Rate Limiter
import { env } from "kawkab";
import { Provider } from "./provider";
// Main configuration object for the application
export const app = {
// Rate limiter configuration
rateLimiter: {
// Enable or disable the rate limiter
enable: true,
// Maximum number of requests allowed within the defined time window
maxRequests: 100,
// Time window (in milliseconds) for rate limiting, default is 1 minute (60 * 1000)
windowTime: 60 * 1000,
// Error code sent when rate limit is exceeded
code: "too-many-requests",
// Message displayed when rate limit is exceeded
message: "Too many requests. Please try again later.",
},
};
شرح الإعدادات:
enable
: يحدد ما إذا كان Rate Limiter مفعلًا أم لا. إذا كانت القيمةtrue
، فسيتم تفعيل النظام. إذا كانتfalse
، سيتم تعطيله.maxRequests
: الحد الأقصى لعدد الطلبات التي يمكن للمستخدم إرسالها في فترة زمنية معينة (تعرف بالفترة الزمنيةwindowTime
).windowTime
: الفترة الزمنية (بالميلي ثانية) التي يتم خلالها تحديد معدل الطلبات. القيمة الافتراضية هي 60 ثانية (60,000 ميلي ثانية).code
: الرمز الذي سيتم إرساله كاستجابة عندما يتجاوز العميل الحد المسموح به للطلبات.message
: الرسالة التي سيتم عرضها للمستخدم عندما يتجاوز الحد المسموح به للطلبات.
الخلاصة
يساعد Rate Limiter في حماية تطبيقك من الهجمات التي تعتمد على إرسال عدد كبير من الطلبات في وقت قصير. من خلال إعدادات قابلة للتخصيص في configuration.ts
, يمكنك تحديد الحد الأقصى للطلبات وفترة التوقيت التي يمكن خلالها إرسال الطلبات. هذا يحسن من أمان الخادم ويحسن تجربة المستخدم.
ملاحظة: تأكد من أن إعدادات Rate Limiter متوافقة مع احتياجات تطبيقك ومع حجم حركة المرور التي تتوقعها.