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 امن و پایدار.