شرح Rate Limit وأهميته في الحماية .

الRate Limit من أهم الحمايات للصد من هجمات الضغط على بعض وظائف السيرفر لأهداف مختلفة قد تصل الى وصول الى بيانات حساسة .

1337r00tمنذ 4 سنوات

1337r00t | BlackFoxs Inc

------------------------------------------------

* السلام عليكم ورحمة الله وبركاته *

------------------

الحمد لله على جميع نِعمه علينا ما علمنا منها وما لم نعلم حمداً كثيراً والصلاة والسلام على نبينا محمد اشرف الخلق والمرسلين, اما بعد :-

--------------------

قبل أن اتحدث, الCaptcha ليس في دائرة المقالة, والRate Limit ليس محصورا على شيء فالRate limit متواجد في Systems و Networks و WebApps الخ...

-------------------

# ماهو Rate Limit :-

هو المسؤول عن التحكم بمقدار الطلبات من الكلاينت او المستخدم (Requests) للسيرفر .

-------------------

# أنواع Rate Limit :-

يوجد ثلاث انواع وهي :-

User rate limiting نوع يخص endpoint يتعامل معه المستخدم مثل "اضافة منتج" اذا تجاوز العدد المسموح له من الطلبات سوف يرفض السيرفر اي طلب آخر لكن سوف يستطيع بطبيعة الحال التعامل مع endpoints المتبقية مثلا "حذف منتج"
Geographic rate limiting هو نوع يتبع مكان وزمن يحدده المبرمج يدويا او تلقائيا, مثلا بعد فترة منتصف الليل يقلل من حد rate limit تفاديا لأي هجوم او لأي سبب كان
Server rate limiting هو نوع يكون على مستوى السيرفر كامل مثلا تجاوزت الحد المعين عن البحث عن صديق لك بنشاط مشبوه, يقوم هذا النوع بحظرك بشكل كامل ويمنعك من زيارة او استخدام اي صفحة او endpoint ان كان مؤقتا او لا .

--------------------

# شرح فكرة وأهمية Rate Limit :-

في حياتنا العادية عندما نرى تصرفات مسيئة نقول مع أنفسنا "كل شيء له حدود حمراء", هذه هي فكرة Rate Limiting ف هنا سوف تعرف ان Rate Limit مهم في مشاريعنا او تطبيقاتنا او API الخاص بنا, ف هو يحميك من الهجمات مثل التخمين و هجمات حرمان الخدمة .

--------------------

# الحماية و Rate Limit :-

سوف نتحدث بشكل مهم جدا في هذه الفقرة, كما ذكرت سابقا ان فكرة Rate Limiting هي وضع حد للطلبات من المستخدم, لكن سوف نأخذ الجهة قليلا من الضحية الى المخترق, وقبل أتكلم مطولا يجب ان نذكر القصة الشهيرة اللتي حدثت لتويتر سنة 2009 (المصدر) :-

In January 2009, an attacker was able to gain administrator access to a Twitter server because the server did not restrict the number of login attempts .

وصل المخترق الى صلاحيات مسؤول في تويتر بسبب عدم وجود Rate Limit, وطبعا لن أحكي لكم الخسائر, وأيضا كما نرى دائما في تطبيقات ومواقع البنوك والأتصالات الخ.. حول العالم تستخدم مايسمى OTP للتحقق من المسجل ويكون دائما كود التحقق غالبا مكون من 4-6 خانات !! ماذا لو في هذه الحالة لم يضع المبرمج Rate Limit ماذا يحدث ؟ بكل بساطة لن يحتاج المخترق الا كتابة exploit يقوم بتخمين OTP وصدقني لن يحتاج سوى دقائق معدودة لأاختراق بياناتك كاملة ووصول كامل للمستخدم (Full Takeover) فالمبرمج في هذه الحالة لن يستطيع تعويض المستخدم ثمن معلوماته الحساسة, من الأفضل دائما أخذ التدابير الأمنية للبنية التحتية واصغر خطأ سوف يواجهه ضرر بكل تأكيد, وهذه مجرد أمثلة وهناك الكثير من سيناريوهات الهجوم اللي يتبعها المهاجم في عدم وجود rate limit .

----------------------------

# وضع Rate Limit :-

اذا كنت مستخدم اطار العمل لارافل فأستخدم Throttling جدا ممتاز, وتوجد عدة طرق في برمجة Rate limiting بأستخدام طريقتين شهيرتين وهي عن طريق Session والثانية IP, توجد مشاريع جاهزة كثيرة على GitHub اكتب في محرك البحث Rate Limit وسوف ترى الكثير من المشاريع بشتى اللغات البرمجية واطارات العمل اختار مايناسبك, ولمن لديه Nginx تستطيع استخدام ngx_http_limit_req_module وهي تعتمد على ماذكرت لك في في النوع الأول IP :-

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=2r/s;
    ...

server {
    ...
    location /YourPathIfYouHave/ {
        limit_req zone=one burst=5;
    }
}

وأيضا في Apache يوجد mod_ratelimit وهي تعتمد على ماذكرت لك في في النوع الأول IP :-

<Location "/YourPathIFYouHave">
    SetOutputFilter RATE_LIMIT
    SetEnv rate-limit 400
    SetEnv rate-initial-burst 512
</Location>

--------------------

أتمنى ان المقال خفيف وسلس ومفهوم .

شكرا للجميع ورمضان كريم عالجميع تقبل الله صيامكم وقيامكم .

 

 

1337r00t @ Blackfoxs Group ©

https://1337r00t.me

كلمات دليلية: rate limit
1
إعجاب
3554
مشاهدات
0
مشاركة
2
متابع

التعليقات (1)

عبد الله:

وعليكم السلام ورحمة الله وبركاته

يعني ممكن يكون استخدامه على مستوى الخادم وممكن على مستوى التطبيق، هل هذا صحيح ؟

باختصار ما فهمته هو وضع حد للمحاولات التي تجري من قبل المستخدم ومن ثم يتم حظره بواسطة ip الخاص به أو تجديد صلاحية الرمز السري من جديد بحيث يكون متغير ولا يمكن تخمينه خلال فترة دقيقة أو أكثر بقليل.

 

احييك على المواضيع المفيدة استمر فأنا متابع لك، وواضح من المشاهدات أنه لك متابعين كُثر.

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !