Rate Limiting یعنی محدود کردن تعداد درخواست از یک کاربر در زمان مشخص. برای امنیت API و جلوگیری از DDoS ضروریه.
چرا Rate Limiting؟
جلوگیری از DDoS
محافظت منابع: سرور
هزینه: bandwidth کنترل
عدالت: همه کاربران دسترسی داشته باشن
Anti-scraping: جلوی scraper
الگوریتمها
Token Bucket
سطل Token. هر Request یه Token میخوره.
Leaky Bucket
Request ها در صف. با نرخ ثابت پردازش.
Fixed Window
در یه پنجره ثابت (مثل ۱ دقیقه) تعداد محدود.
Sliding Window
پنجره متحرک. دقیقتر.
پیادهسازی
Nginx
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
limit_req zone=api burst=20;
Apache
mod_ratelimit یا mod_evasive
Cloudflare
Rate Limiting در Dashboard.
Application Layer
Redis + counters. دقیقترین.
Headers
API باید Header بفرسته:
X-RateLimit-Limit
X-RateLimit-Remaining
X-RateLimit-Reset
Status Code
429 Too Many Requests
مثال Node.js
npm install express-rate-limit
const limit = rateLimit({
windowMs: 15 * 60 * 1000,
max: 100
});
Laravel
Route::middleware('throttle:60,1')->group(...);
WordPress
پلاگین WP Rate Limit یا Wordfence Login Rate Limit.
Different Tiers
کاربران Premium محدودیت کمتر داشته باشن.
IP-based vs User-based
IP: عمومی. User: دقیقتر.
API Keys
هر API Key یه محدودیت.
Distributed Systems
Redis برای همه سرورها یکسان.
Best Practices
Communicate: به کاربر بگید
Gradual: تدریجی
Whitelist: کاربران مجاز
Monitor: آمار
سباهاست
Rate Limiting در سباهاست خودکار برای WordPress.
جمعبندی
Rate Limiting یه لایه امنیتی حیاتی. با پیادهسازی درست، API امن و پایدار.