پرش به مطلب اصلی

محدودیت تعداد درخواست

محدودسازی نرخ درخواست، مکانیزمی برای کنترل ترافیک ورودی به وب‌سایت یا شبکه است. با استفاده از این قابلیت می‌توان تعیین کرد که هر کاربر (بر اساس IP) تنها مجاز به ارسال تعداد مشخصی درخواست در یک بازه‌ زمانی مشخص (مانند ثانیه، دقیقه، ساعت یا روز) باشد. در صورتی که این محدودیت رعایت نشود، درخواست‌های اضافی با پاسخ خطا مواجه خواهند شد. پیاده‌سازی Rate Limiting اهداف زیر را دنبال می‌کند:

  • مدیریت بهتر جریان ترافیک

  • افزایش امنیت با جلوگیری از حملاتی نظیر DDoS ،Brute Force و سایر حملات در لایه‌ اپلیکیشن

تنظیمات Rate Limiting در آبالون

این ویژگی امکان تعریف چندین قانون مجزا را فراهم می‌کند؛ بنابراین می‌توانید برای مسیرهای مختلف در وب‌سایت خود، سیاست‌های کنترل نرخ متفاوتی تعیین کنید.

نحوه تعریف قانون در پنل کاربری

Alt text

برای ایجاد یک قانون جدید:

۱. وارد پنل کاربری آبالون شوید.

۲. به بخش CDN بروید.

۳. در قسمت امنیت و سپس محدودیت تعداد درخواست‌ها، روی گزینه‌ افزودن قانون کلیک کنید.

در این مرحله، می‌توانید مسیر موردنظر، بازه‌ زمانی، تعداد مجاز درخواست و نوع واکنش در صورت عبور از حد مجاز را تعریف و ذخیره کنید.

تنظیم پارامترهای محدودیت نرخ درخواست

در این بخش می‌توانید برای ایجاد یک قانون Rate Limiting، پارامترهای زیر را تنظیم کنید:

  • مسیر محدودیت (در قالب الگوی Glob)

  • توضیحات (جهت مستندسازی داخلی یا مدیریت آسان‌تر قوانین)

  • تعداد درخواست

  • بازه‌ زمانی

  • متدهای مجاز (GET ، POST و ...)

  • لیست IPهای مجاز (Whitelist)

هشدار

توجه داشته باشید که مسیر باید با استفاده از الگوی Glob وارد شود.

Alt text

در قسمت محدودیت، دو پارامتر کلیدی تعریف می‌شوند:

  • تعداد درخواست: بیشینه‌ تعداد درخواست‌هایی است که از یک IP در بازه‌ زمانی مشخص مجاز خواهد بود. در صورت تجاوز از این مقدار، درخواست‌ها، با خطای ۴۲۹ (Too Many Requests) مواجه می‌شوند.

  • بازه‌ زمانی: مدت زمانی است که مقدار مشخص‌شده در بخش «تعداد درخواست» در آن سنجیده می‌شود. به‌عبارت دیگر، اگر یک IP در این بازه زمانی بیشتر از حد مجاز درخواست ارسال کند، محدودیت اعمال شده و پاسخ ۴۲۹ دریافت خواهد کرد.

پس از مشخص‌کردن این دو مقدار، می‌توانید تعیین کنید که در صورت عبور یک IP از این محدودیت، برای مدت زمان مشخصی دسترسی آن IP به مسیر موردنظر مسدود شود و همه درخواست‌هایش با وضعیت ۴۲۹ پاسخ داده شوند.

Alt text

در ادامه، بخشی برای تعیین متدهای HTTP مجاز و نشانی‌های IP مجاز وجود دارد. محدودیتی که تعریف می‌کنید، شامل متدها و IPهایی که در این قسمت وارد شده‌اند نخواهد شد. به این ترتیب می‌توانید مشخص کنید که این محدودیت روی چه متدها یا آدرس‌هایی اعمال نشود. همچنین این بخش‌ها، مانند بخش توضیحات، الزامی نیستند و در صورت نیاز می‌توانید آن‌ها را خالی بگذارید. در پایان، پس از وارد کردن اطلاعات موردنظر و ثبت تنظیمات، قانون محدودیت فعال خواهد شد.

تعیین رفتار ماژول محدودیت تعداد درخواست

Alt text

در ماژول محدودیت تعداد درخواست (Rate Limit) می‌توان مشخص کرد که در صورت عبور نرخ درخواست‌ها از حد تعیین‌شده برای یک مسیر خاص، چه رفتاری اعمال شود. در این حالت، می‌توانید انتخاب کنید که:

  • درخواست‌های اضافه مسدود شوند (با پاسخ خطای ۴۲۹)

  • یا کاربر با چالش DDoS مواجه شود.

در صورت انتخاب چالش DDoS، امکان تعیین سطح محافظت و همچنین مدت زمان اعتبار چالش برای هر کاربر نیز وجود دارد. این تنظیمات به شما اجازه می‌دهد رفتار دقیق‌تری نسبت به مدیریت ترافیک بیش‌ازحد یا مشکوک در مسیرهای حساس داشته باشید.

اولویت‌دهی به محدودیت‌ها

در محدودیت تعداد درخواست، قوانین به ترتیب عدد اولویت بررسی می‌شوند. قانون‌هایی که عدد اولویت پایین‌تری دارند، زودتر بررسی می‌شوند. اگر یک کاربر با یکی از این قانون‌ها محدود شود، دیگر قانون‌ها برای او بررسی نمی‌شوند.

با استفاده از اولویت‌ها، می‌توانید مسیرهای مختلف سایت را با دقت بیشتری مدیریت کنید. برای مثال، اگر یک مسیر مهم و حساس دارید، می‌توانید آن را با عدد اولویت کمتر تعریف کنید تا زودتر بررسی شود. مسیرهای کم‌اهمیت‌تر را می‌توان با عدد اولویت بیشتر قرار داد.

مثلاً اگر بخواهید تعداد درخواست‌ها به مسیر **/example.com/api/login را بیشتر محدود کنید تا مسیر کلی‌تر **/example.com/api، باید قانون مربوط به مسیر login را با عدد اولویت ۱ و مسیر کلی‌تر را با عدد اولویت ۲ وارد کنید. به این شکل، محدودیت حساس‌تر زودتر اعمال می‌شود.