در حال بارگذاری...
تست محدودیت نرخ درخواست و اعتبارسنجی ورودی در API برای جلوگیری از حملات brute force، DoS و injection. (محتوای آموزشی تکمیلی — خارج از WSTG v4.2 رسمی)
اهداف این درس
محدودیت نرخ مکانیزمی است که تعداد درخواستهایی که یک کاربر میتواند در واحد زمان ارسال کند را محدود میکند. این مکانیزم از حملات brute force، DoS و سوءاستفاده از API جلوگیری میکند.
مکانیزمی که تعداد درخواستهای مجاز در واحد زمان را محدود میکند.
| Header | توضیح | مثال |
|---|---|---|
| X-Rate-Limit-Limit | حداکثر درخواست مجاز | 100 |
| X-Rate-Limit-Remaining | درخواستهای باقیمانده | 95 |
| X-Rate-Limit-Reset | زمان بازنشانی | 1609459200 |
| Retry-After | زمان انتظار قبل از درخواست مجدد | 60 |
1# ارسال ۱۰۰ درخواست سریع2for i in $(seq 1 100); do3 response=$(curl -s -o /dev/null -w "%{http_code}" \4 -X POST https://target.com/api/login \5 -d "username=admin&password=wrong${i}")6 echo "Request ${i}: ${response}"7 if [ "$response" = "429" ]; then8 echo "Rate limit hit at request ${i}"9 break10 fi11doneاعتبارسنجی ورودی شامل بررسی نوع، طول، محدوده، فرمت و ساختار دادههای ورودی است.
| نوع | توضیح | مثال |
|---|---|---|
| Type | بررسی نوع داده | number بهجای string |
| Length | بررسی طول | حداکثر ۱۰۰ کاراکتر |
| Range | بررسی محدوده | سن بین ۱ تا ۱۵۰ |
| Format | بررسی فرمت | ایمیل، شماره تلفن |
| Pattern | بررسی الگو | regex |
| Enum | بررسی مقادیر مجاز | status: active, inactive |
1# تست نوع داده نادرست2curl -X POST https://target.com/api/users \3 -H "Content-Type: application/json" \4 -d '{"age": "not_a_number"}'56# تست طول بیشازحد7curl -X POST https://target.com/api/users \8 -H "Content-Type: application/json" \9 -d '{"name": "A".repeat(10000)}'1011# تست کاراکترهای خاص12curl -X POST https://target.com/api/users \13 -H "Content-Type: application/json" \14 -d '{"name": "<script>alert(1)</script>"}'هشدار
هرگز فقط به اعتبارسنجی سمت کلاینت اعتماد نکنید. تمام اعتبارسنجیها باید سمت سرور هم انجام شوند.
توصیه عملی
از کتابخانههای validation مثل Joi، Yup یا Zod برای اعتبارسنجی ورودیها استفاده کنید. این کتابخانهها schema validation قدرتمندی ارائه میدهند.
محدودیت نرخ باید بر اساس IP، کاربر و endpoint تنظیم شود.
اعتبارسنجی ورودی باید شامل نوع، طول، محدوده و فرمت باشد.
پاسخهای خطا نباید اطلاعات داخلی فاش کنند.
Batch APIها باید محدودیت تعداد داشته باشند.
کد وضعیت HTTP برای محدودیت نرخ چیست؟
Rate Limiting چیست و چرا مهم است؟
Rate Limiting محدودیتی بر تعداد درخواستهایی است که یک کاربر میتواند در واحد زمان ارسال کند. از حملات brute force، DoS و سوءاستفاده جلوگیری میکند.
چگونه Rate Limiting را تست کنیم؟
با ارسال تعداد زیادی درخواست در زمان کوتاه و بررسی اینکه آیا سرور درخواستها را محدود میکند یا خیر.
اعتبارسنجی ورودی شامل چه مواردی است؟
نوع داده، طول، محدوده، فرمت، کاراکترهای مجاز و ساختار داده.