Rate Limiting چیست؟ بررسی نقش محدودیت نرخ در محافظت از APIهای وب در برابر حملات


سرورهای Back-end نیروگاه برنامه های کاربردی مدرن هستند. از این رو، سطح بالایی از تخصص برای ساخت آنها استفاده می شود. با این حال، مهم است که اطمینان حاصل شود که این سرورهای بکاند به خوبی در برابر بازیگران بد (هکرها، فیشرها) ایمن هستند.
این عناصر بد از طریق نقاط آسیبپذیر در دروازهها به سرورهای بکاند دسترسی پیدا میکنند تا خرابی ایجاد کنند، اطلاعات مربوطه را سرقت کنند و بر عملکرد و کارایی برنامه تأثیر منفی بگذارند از طریق اشکال مختلف حملات API مانند تزریقهای SQL و غیر مبتنی بر SQL، Distributed Denial-of. -حملات سرویس (DDoS)، بدافزار کد و روشهای دیگر برای بهرهبرداری از آسیبپذیریها.
در این مقاله، من روی محدود کردن نرخ تمرکز خواهم کرد، یک هک مهم که به محافظت از API بکاند در برابر سوء استفاده توسط هکرها از طریق استفاده از DDoS، حملات Brute-force و سایر فعالیتهای مخرب مرتبط کمک میکند. اما اول از همه، محدودیت نرخ به چه معناست؟
فهرست مطالب
پذیرش و استفاده از محدودیت نرخ توسط سایت های محبوب
سایر موارد استفاده واقعی از API Rate Limiting
محدود کردن نرخ چگونه کار می کند؟
نمونه هایی از الگوریتم های محدود کننده نرخ
دیگر اخبار
Discipulus Ventures بنیانگذاران جوان را راهنمایی می کند تا دیدگاه نورمن راکول از آمریکا را احیا کنند
Rate Limiting چیست؟
محدود کردن نرخ مکانیزمی است که برای تنظیم فرکانس درخواستهای ارسال شده توسط مشتری به سرور بکاند ایجاد شده است. از تکرار درخواست مشتری در یک بازه زمانی تعریف شده جلوگیری می کند.
چرا باید محدودیت نرخ را در توسعه API پیاده سازی کنیم؟ در بخش بعدی در مورد آن بحث خواهیم کرد.
اهمیت محدود کردن نرخ
در اینجا برخی از دلایل استفاده از محدودیت نرخ در توسعه برنامه های کاربردی Back-end آورده شده است.
حملات DDoS
اول از همه، به عنوان یک اقدام پیشگیرانه برای کاهش حملات DDoS عمل می کند. حملات DDoS حملات مخربی به سرورها هستند که شامل پرکردن نقاط پایانی سرور با درخواستهای متعدد، اغلب میلیونها نفر است که منجر به کاهش کارایی سرور و اختلال در عملکرد سرور میشود. در بیشتر موارد، آنها با استفاده از ربات های خودکار رخ می دهند.
این حملات می تواند حجمی، مبتنی بر پروتکل یا مبتنی بر لایه برنامه باشد. یک نمونه کلیدی از این شکل از حمله در وب سایت GitHub در سال 2018 رخ داد.
خراش دادن وب
محدود کردن نرخ همچنین در محافظت از برنامه های کاربردی وب و سرورهای وب در برابر خراشنده های وب و خزنده های وب غیرمجاز نقش دارد. این ابزارها، همچنین خودکار، معمولاً درخواستهایی را برای جمعآوری دادههای مربوط به وبسایت ارسال میکنند که میتواند در معرض غیرمجاز قرار گیرد. وجود یک محدود کننده نرخ خوب در محل به جلوگیری از همه اینها کمک می کند.
حمله نیروی بی رحم
این شامل تلاش برای دستیابی به منابع سرور با آزمایش تمام تنظیمات ممکن برای دسترسی به منبع است. این را می توان به صورت دستی انجام داد، اما عمدتاً با استفاده از ربات ها خودکار می شود زیرا منابع مصرف می کند. محدود کردن نرخ نیز با غیرفعال کردن درخواستها در صورت تجاوز از تعداد درخواستها در یک بازه زمانی خاص، در جلوگیری از این نوع حملات مؤثر است.
بهینه سازی منابع
درخواستهای سرور معمولاً برای دارندگان API هزینههایی را از نظر هزینه اجرا و نگهداری هزینه میکنند. وجود یک محدود کننده نرخ به تنظیم تعداد درخواست هایی که سرور می تواند رسیدگی کند کمک می کند، به صرفه جویی در هزینه و به حداکثر رساندن کارایی کمک می کند. متعاقباً، برخی از الگوریتمهایی را برجسته میکنیم که محدودکنندههای نرخ بر روی آنها ساخته شدهاند.
پذیرش و استفاده از محدودیت نرخ توسط سایت های محبوب
محدود کردن نرخ به عنوان یک معیار امنیتی توسط بسیاری از محصولات فناوری، از برنامه های کاربردی در مقیاس بزرگ تا مقیاس کوچک، اتخاذ شده است. به عنوان مثال، توییتر (X) دارای یک ویژگی محدودیت rale است که در رابط های برنامه نویسی کاربردی که در اختیار توسعه دهندگان قرار می دهد، پیاده سازی شده است.
این رابطها امکان دسترسی به افزونه ثبت نام توییتر و سایر آپشن های ی را که توییتر در دسترس قرار داده است، میدهد. برای تضمین اجرای کارآمد این رابطها، توییتر محدودیت نرخ 50 درخواست پست توییت را برای هر کاربر در هر 24 ساعت اعمال کرد. جزئیات بیشتر در مورد این را می توان در اینجا یافت.
سایر موارد استفاده واقعی از API Rate Limiting
استفاده از یک رابط برنامه نویسی کاربردی فقط به آنچه سایت های محبوب مانند توییتر از آن استفاده می کنند محدود نمی شود. در اینجا برخی دیگر از کاربردهای واقعی محدود کردن نرخ در دنیای امروز آورده شده است.
کاهش بروز هرزنامه
تحقیقات نشان می دهد که روزانه بیش از 160 میلیارد ایمیل اسپم ارسال می شود. از این رو این امر باعث اجرای محدودیت نرخ برای جلوگیری از انتشار پیام های ناخواسته و محتوای هرزنامه از طریق سیستم عامل های پیام رسانی و ایمیل در یک محدوده زمانی خاص شده است. با این کار، استفاده مسئولانه از این پلتفرم ها را تشویق می کند.
مقابله با فعالیت های متقلبانه
محدودیت نرخ در حال حاضر در بین برنامههای کاربردی وب اجرا میشود تا به شناسایی فعالیتهای غیرمعمول برنامههای وب توسط برخی از کاربرانی که ممکن است دارای مقاصد کلاهبرداری باشند کمک کند. این اقدام برای جلوگیری و کاهش تراکنشهای جعلی در حال انجام بر روی سرور برنامه کاربردی است.
غیرفعال کردن احراز هویت کاربر مخرب
افرادی که قصد مخرب دارند ممکن است بخواهند سرورهای وب را با انجام اقدامات متعددی مانند brute force، DDoS و تکنیکهای دیگر برای تسخیر حسابهای دیگر کاربران به خطر بیاندازند.
با این حال، چندین سایت دارای سیستمهای محدود نرخ کارآمد در مکانهایی هستند که تعداد تلاشهای ورود به سیستم را برای یک سایت در محدوده زمانی خاص محدود میکنند. این همچنین به اقدامات امنیتی وب کمک می کند.
محدود کردن نرخ چگونه کار می کند؟
ابزارهای محدود کننده نرخ مورد استفاده در برنامه ها بر اساس ساختارهای الگوریتم های مختلف پیاده سازی می شوند. این الگوریتمها عملکرد ابزار محدودکننده نرخ را هدایت میکنند که هدف نهایی آن محدود کردن تعداد درخواستهایی است که سرور در هر زمان دریافت میکند تا کارایی آن را افزایش دهد.
نمونه هایی از الگوریتم های محدود کننده نرخ
در اینجا برخی از محبوب ترین الگوریتم هایی که در حال حاضر مورد استفاده قرار می گیرند آورده شده است.
الگوریتم پنجره ثابت
این الگوریتم مبتنی بر تثبیت یک بازه زمانی مشخص استاتیک توسط سرور برای همه کلاینتها، تنظیم تعداد درخواستهایی است که میتوان به سرور کرد، صرف نظر از تعداد کلاینتهایی که به API دسترسی دارند.
به عنوان مثال، تعیین محدودیت درخواست پنج دقیقه مانع از دسترسی هر مشتری به نقطه پایانی تا پایان پنجره پنج دقیقه می شود. این مدل مقرون به صرفه نیست
الگوریتم پنجره کشویی
این الگوریتم از نظر پیکربندی شبیه به الگوریتم پنجره ثابت است اما راه حلی برای الگوریتم پنجره ثابت با شخصی سازی دسترسی مشتری به تعداد معینی از درخواست ها در یک بازه زمانی خاص با ایجاد بازه های زمانی مستقل برای هر مشتری ارائه می دهد.
به عنوان مثال، اگر مشتری A تا ساعت 10:00 به درخواست دسترسی پیدا کند، مشتری مجاز است تا 10 درخواست تا پایان زمان تا ساعت 10:03 ارسال کند، در حالی که مشتری B که تا ساعت 10:02 به درخواست دسترسی پیدا می کند، مجاز است 10 درخواست ارسال کند. تا انقضا تا ساعت 10:05.
الگوریتم سطل نشت
این الگوریتم بر اساس معنای تحت اللفظی نام آن است: سطل نشت. این تضمین می کند که فقط تعداد خاصی از درخواست ها می توانند توسط سرور در هر زمان معین پردازش شوند. هر درخواستی که بیش از این تعداد باشد نادیده گرفته می شود و " خطای 429 " صادر می شود. این برای اطمینان از بارگذاری بیش از حد سرور و تضمین حفظ کارایی و سرعت سرور است.
الگوریتم سطل توکن
این مدل شبیه سطل نشتی است زیرا یک سطل فرضی وجود دارد که به عنوان محدود کننده سرعت عمل می کند. این سطل برای مدیریت توکن ها عمل می کند و توکن های جدید به صورت دوره ای به سطل اضافه می شوند.
هنگامی که یک درخواست ارسال می شود، یک توکن دور انداخته می شود و این کار تا زمانی ادامه می یابد که تمام توکن های موجود در سطل خالی شوند. در آن مرحله، هر درخواستی با خطای 429 کنار گذاشته میشود. این همچنین به جلوگیری از ازدحام سرور و اطمینان از حداکثر کارایی کمک می کند.
بهترین روشهای محدود کردن امتیاز
توسعه کارآمد وب API عمدتاً با پیروی از بهترین شیوه های توسعه API قابل دستیابی است. برای به حداکثر رساندن استفاده از یک محدود کننده نرخ به عنوان یک معیار امنیتی API، موارد زیر باید اجرا شوند.
ابتدا یک الگوریتم محدود کننده نرخ سازگار را انتخاب کنید. وجود یک الگوریتم محدود کننده نرخ قوی برای دستیابی به نتیجه مطلوب ضروری است. انتخاب بهترین الگوریتم محدود کننده نرخ همگام با نقطه پایانی API شما نیز لازم است.
اطمینان حاصل کنید که مجموعه های حد در محدوده محدوده معقول هستند . تنظیم پارامترهای محدودیت نرخ دلخواه می تواند بر تجربه کاربر تأثیر منفی بگذارد و می تواند هدف آن را شکست دهد. ثابت شده است که تعیین یک محدودیت زمانی معقول برای به حداکثر رساندن تجربه کاربر و مقابله با حملات بسیار مؤثرتر است.
از مدیریت کارآمد خطا اطمینان حاصل کنید و بازخورد لازم را به مشتری ارائه دهید. کد خطای پیشفرض محدودکننده نرخ، کد خطای 429 است. رسیدگی مناسب به خطاهایی که در طول استفاده از API رخ میدهند، بهویژه به دلیل سوء استفاده از API برای ارائه بازخورد لازم به کاربر ضروری است.
مکانیسمهای محدودکننده نرخ انعطافپذیر را در چندین پارامتر پیادهسازی کنید. به نظر می رسد تنظیم یک بازه زمانی ثابت در تمام نقاط پایانی عمل بدی باشد، زیرا برخی از نقاط پایانی API بسیار بیشتر از سایرین به داده حساس هستند. از این رو، داشتن یک محدودکننده نرخ انعطافپذیر که پارامترها را به ترتیب مرتبط تنظیم میکند، به به حداکثر رساندن کارایی سرور و تضمین امنیت کمک میکند.
از ارائه ابزارهای ثبت برنامه مناسب، نظارت و قابلیت مشاهده اطمینان حاصل کنید. وجود معیارهای API، ثبت گزارش، نظارت و ابزارهای مشاهدهپذیری همچنین به عنوان یک هک امنیتی اضافی برای Web APIها کمک میکند، زیرا به نظارت بر فعالیت سرور کمک میکنند و از طریق استفاده از هشدارهای نظارتی، هنگام شناسایی درخواستهای مشکوک به توسعهدهنده سرور اطلاع میدهند. سرور
از همزمانی محدودیت نرخ و سایر اقدامات امنیتی API اطمینان حاصل کنید. همزمانی مناسب محدودکنندههای نرخ با سایر هکهای امنیتی API باید برای تقویت اقدامات امنیتی API مورد استفاده قرار گیرد. دانش کافی از اقدامات امنیتی و تخصص لازم است تا با اقدامات امنیتی موجود مقابله نشود.
از اسناد API مناسب اطمینان حاصل کنید. همچنین برای اطمینان از اینکه کاربران، سایر توسعه دهندگان و مشتریان به طور یکسان از روش محدود کردن نرخ برای اطمینان از انطباق با قوانین محدودکننده نرخ آگاه هستند، اسناد API کافی نیز مورد نیاز است.
نتیجه گیری
در نتیجه، ما محدودیت نرخ را به عنوان یک هک امنیتی مهم API و برخی از موارد استفاده واقعی آن را برجسته کردهایم.
به راحتی می توانید مقالات دیگر من را در اینجا تحلیل کنید. تا دفعه بعد، به کدنویسی ادامه دهید!
ارسال نظر