Darayas
Darayas
خواندن ۳ دقیقه·۴ سال پیش

محدود سازی تعداد درخواست بر زمان با AspNetCoreRateLimit

 محدود سازی تعداد درخواست بر زمان با AspNetCoreRateLimit در سایت dotnetLearn.com
محدود سازی تعداد درخواست بر زمان با AspNetCoreRateLimit در سایت dotnetLearn.com


مشاهده ی دوره رایگان AspNetCoreRateLimit

به احتمال قوی شما هم تا به حال با مشکل ارسال تعداد نامحدود درخواست کاربران مواجه شده اید و ممکنه حتی تلاش های زیادی نیز برای رفع این مشکل انجام داده باشید حالا یا موفق شده اید تا حدودی جلوی این کار را بگیرید یا با مشکلاتی مواجه شده اید که کلا بیخیال این قضیه شده اید. در این دوره میخوام پکیجی را به شما معرفی کنم که بسیار قدرتمند و کامل این مشکل را برای شما حل میکند و در عین حال بسیار سبک هم هست پس به هیچ عنوان نگران بار اضافی روی سرور نباشید.

اسم این پکیج AspNetCoreRateLimit هست. طرز کارAspNetCoreRateLimit بدین صورت است که شما تمامی تنظیمات و قوانین و سیاست های مد نظرتان را در فایل appsetting.json مینویسید و بقیه ی کار را به این میان افزار می سپارید.

و اما چرا باید از این ابزار استفاده کنیم؟

  • جلوگیری از ارسال تعداد درخواست های زیاد به سرور در سطح نرم افزار
  • جلوگیری از کاهش سرعت سایت به علت جلوگیری از ارسال درخواست های اضافی
  • جلوگیری از حمله ی Dictionary Attack (یافتن کلمه عبور با استفاده از فرهنگ لغت و تست های مکرر)
  • کنترل بیشتر روی درخواست های ارسال شده به سرور

از جمله امکانات بسیار قدرتمندی که میتوان به آن اشاره کرد قابلیت های زیر هستند:

توانایی تعیین لیست سفید برای IP های خاص (برای مثال خزنده های گوگل)

با استفاده از این قابلیت میتوانید برخی از IP ها را نادیده بگیرید و قوانین و سیاست ها را برای آن ها در نظر نگیرید از جمله ی این IP ها میتوان به IP موتورهای جستوجوگر اشاره کرد که اگر آن ها را محدود کنیم ممکن است روی سئوی سایت تاثیر منفی داشته باشد.

توانایی تعیین لیست سفید برای Endpoint های خاصدر حالات مختلف (GET, POST, PUT و ...)

شاید برخی از صفحات سایت یا برخی از WebApi ها را بخواهیم نادیده بگیریم و یا حتی آنها را فقط در متدهای خاصی نادیده بگیریم با استفاده ازAspNetCoreRateLimit این کار به راحتی امکان پذیر میباشد.

توانایی استفاده از رنج IP

وقتی تعداد IP های مدنظر در یک Rule خاص زیاد هست و همه ی آنها نیز در یک رنج خاص قرار دارند میتوانید با استفاده از این قابلیت کدها را زیاد شلوغ نکنید و فقط رنج IP را به آن بدهید و بقیه ی کار را بهAspNetCoreRateLimit بسپارید.

توانایی ایجاد قوانین برای Endpointهابه صورت اختصاصی و عمومی

شاید قصد داشته باشید که یک صفحه یا WebApi را به صورت کامل در لیست سفید قرار ندهید و فقط قوانین و سیاست های استفاده از آن ها متفاوت باشد با استفاده از این قابلیت میتوانید به راحتی قوانین و سیاست های اختصاصی برای Endpoint های مدنظر درست کنید.

توانایی تعیین محدودیت در زمان های مختلف (ثانیه، دقیقه، ساعت و ...)

شما میتوانید تعیین کنید که هر کاربر در یک زمان مشخص میتواند چند درخواست به سمت سرور ارسال کند و درصورتی که از حد تعیین شده تجاوز کرد با چه کد وضعیتی رو به رو شود. برای مثال هر کاربر در هر پنج ثانیه فقط میتوانید 15 درخواست به سمت سرور ارسال کند که البته زمان میتواند برحسب دقیقه یا ساعت هم باشد.

استفاده از Regular Expression

ممکن هست که بخوایید که فقط Endpoint هایی که در ادرس آنها شرایط و یا کلمات خاصی هست یکسری قوانین برای آن ها لحاظ شود که میتوانید با استفاده از Regular Expression به مقصود خود برسید.

توانایی تعیین لیست سفید برای Device های مختلف

زمانی که از WebApi استفاده میکنید شاید بخواهید دستگاه هایی که نرم افزارهای شرکت خودتان را میزبانی میکنند از این قوانین مستثنا باشید که به راحتی میتوانید در Header درخواست آن ها شناسه دستگاه را قرار دهید تا AspNetCoreRateLimit بتواند آن دستگاه ها را بشناسد و همچنین آن ها را نادیده بگیرد

قابلیت آبدیت قوانین و سیاست ها در زمان اجرای سایت

شاید به دلایلی بخواهید در زمان اجرای نرم افزار قوانین و سیاست ها را تغییر دهید که AspNetCoreRateLimit این قابلیت را فراهم آورده و میتواند از آن بهره بگیرد.

استفاده از Redis برای نگهداری شمارنده ها و قوانین

اگر منابع محدودی دارید و نمیتوانید برای نگهداری شمارنده ها و اطلاعات کاربران از MemoryCacheاستفاده کنید اینجاست که Redis به کمک شما خواهد آمد و میتوانید از آن برای نگهداری اطلاعات و داده های خود استفاده کنید تا حافظه ی RAM سرور دچار مشکل نشود.

شخصی سازی پیغام های سیستم

شما به راحتی میتوانید پیغام های سیستم را سفارشی سازی کنید برای مثال آن ها را ترجمه کنید یا تغییر دهید

مشاهده ی دوره رایگان محدودسازی تعداد درخواست بر زمان با AspNetCoreRateLimit
asp net core
شاید از این پست‌ها خوشتان بیاید