तुमचा रेट लिमिटर (Rate Limiter) हा सुरक्षा नियंत्रण (Security Control) नाही
एका बॉटने काही मिनिटांत माझ्या API मधून एका पासपोर्टचा सर्व डेटा खेचून घेतला.
माझ्या रेट लिमिटरने त्याला रोखले नाही.
मर्यादा दरमहा ३,००० कॉल्सची होती. एका पूर्ण पासपोर्ट स्कॅनसाठी फक्त १९५ कॉल्स लागतात. बॉटने माझ्या मर्यादेच्या आत राहून सर्व काही चोरले.
रेट लिमिटिंग (Rate limiting) तुमच्या इन्फ्रास्ट्रक्चरच्या (infrastructure) खर्चाचे संरक्षण करते. ते तुमच्या डेटाचे संरक्षण करत नाही.
जर तुम्ही या दोन संकल्पना एकत्र केल्या, तर तुमचा डेटा लीक होईल.
रेट लिमिटर एकच प्रश्न विचारतात: हा क्लायंट सध्या मला खूप जास्त खर्चिक पडत आहे का?
स्क्रॅपर्स (Scrapers) मुद्दाम त्या मर्यादेच्या खाली राहतात. माझा स्क्रॅपर प्रति मिनिट २५ विनंत्यांच्या (requests) वेगाने चालत होता. तो अगदी कमी लोड आहे. माझा संपूर्ण डेटासेट कॉपी करण्यासाठी त्याला फक्त ४०,००० कॉल्सची गरज पडेल. जर एखाद्या हॅकरने अनेक मोफत खाती वापरली, तर कोणताही व्हॉल्यूम कॅप (volume cap) त्यांना पकडू शकणार नाही.
व्हॉल्यूमकडे (volume) पाहणे थांबवा. ओळख (identity), कव्हरेज (coverage) आणि पॅटर्न (pattern) कडे लक्ष द्या.
मी दोन चुका केल्या. पहिली म्हणजे, मी सोर्स IP (source IP) लॉग केला नव्हता. एखादा हॅकर पुन्हा मोफत साइन अप करू शकतो.
प्रथम तुमचे लॉग्स (logs) सुधारा. तुमच्या डेटाबेसमध्ये IP आणि देश (country) कॉलम्स जोडा. रिमोट ॲड्रेसऐवजी Cloudflare कडून मिळणारा खरा क्लायंट IP वापरा. यामुळे तुम्ही नेटवर्क लेयरवर (network layer) हल्लेखोरांना ब्लॉक करू शकता.
दुसरे म्हणजे, तुमच्या मर्यादा बदला.
फक्त प्रति महिना विनंत्यांवर मर्यादा घालू नका. एक पासपोर्ट दिवसातून किती वेगवेगळ्या डेस्टिनेशन्सची (destinations) तपासणी करू शकतो यावर मर्यादा लावा. एक खरा वापरकर्ता काही मोजकीच डेस्टिनेशन्स तपासतो. स्क्रॅपर मात्र त्या सर्वांची तपासणी करण्याचा प्रयत्न करतो.
डेटा स्वीपची (data sweep) एक विशिष्ट सिग्नेचर असते:
- ते दाट (dense) असते.
- ते क्रमिक (sequential) असते.
- ते एका सोर्ससाठी सर्व काही कव्हर करते.
तुम्ही हालचालींच्या 'स्लाइडिंग विंडो' (sliding window) वरून हा पॅटर्न ओळखू शकता. जर एखादा पासपोर्ट कमी वेळात खूप जास्त डेस्टिनेशन्सवर हिट करत असेल, तर त्याला फ्लॅग (flag) करा. त्या की (key) ला थ्रॉटल (throttle) करा किंवा त्वरित ब्लॉक करा.
आता तुम्ही फक्त संख्या मोजण्याऐवजी वर्तणुकीवर (behavior) प्रतिक्रिया देता.
तुमची रणनीती दोन कामांमध्ये विभाजित करा:
- रेट लिमिटर: तुमच्या पैशांचे संरक्षण करा. प्रति-की (per-key) व्हॉल्यूम कॅप्स वापरा.
- एक्सट्रॅक्शन डिफेन्स (Extraction Defense): तुमच्या डेटाचे संरक्षण करा. ओळख (identity), कव्हरेज (coverage) आणि कॅडेन्स (cadence) वापरा.
जर तुमच्याकडे फक्त रेट लिमिटर असेल, तर तुमच्याकडे फक्त बिलिंगसाठीची सुरक्षा (billing guardrail) आहे. तुमच्याकडे सुरक्षा (security) नाही.
स्रोत: https://dev.to/mathis_higuinen_6db9b244c/your-rate-limiter-is-not-a-security-control-4b3f
