Firebase सुरक्षा नियम फायरस्टोर, रीयलटाइम डेटाबेस और क्लाउड स्टोरेज [S1] में डेटा की सुरक्षा के लिए एक दानेदार, सर्वर-प्रबलित तंत्र प्रदान करते हैं। क्योंकि Firebase एप्लिकेशन अक्सर क्लाइंट साइड से सीधे इन क्लाउड सेवाओं के साथ इंटरैक्ट करते हैं, ये नियम बैकएंड डेटा [S1] तक अनधिकृत पहुंच को रोकने वाली एकमात्र बाधा का प्रतिनिधित्व करते हैं।
अनुमेय नियमों का प्रभाव
ग़लत तरीके से कॉन्फ़िगर किए गए नियमों के कारण महत्वपूर्ण डेटा एक्सपोज़र हो सकता है [S2]। यदि नियमों को अत्यधिक अनुमति देने के लिए सेट किया गया है - उदाहरण के लिए, डिफ़ॉल्ट 'परीक्षण मोड' सेटिंग्स का उपयोग करना जो वैश्विक पहुंच की अनुमति देता है - प्रोजेक्ट आईडी का ज्ञान रखने वाला कोई भी उपयोगकर्ता संपूर्ण डेटाबेस सामग्री [S2] को पढ़, संशोधित या हटा सकता है। यह सभी क्लाइंट-साइड सुरक्षा उपायों को दरकिनार कर देता है और इसके परिणामस्वरूप संवेदनशील उपयोगकर्ता जानकारी का नुकसान हो सकता है या सेवा में पूर्ण व्यवधान हो सकता है [S2]।
मूल कारण: अपर्याप्त प्राधिकरण तर्क
इन कमजोरियों का मूल कारण आम तौर पर विशिष्ट शर्तों को लागू करने में विफलता है जो उपयोगकर्ता की पहचान या संसाधन विशेषताओं [S3] के आधार पर पहुंच को प्रतिबंधित करती है। डेवलपर्स अक्सर उत्पादन परिवेश में डिफ़ॉल्ट कॉन्फ़िगरेशन को सक्रिय छोड़ देते हैं जो request.auth ऑब्जेक्ट [S3] को मान्य नहीं करते हैं। request.auth का मूल्यांकन किए बिना, सिस्टम एक वैध प्रमाणित उपयोगकर्ता और एक अनाम अनुरोधकर्ता [S3] के बीच अंतर नहीं कर सकता है।
तकनीकी निवारण
Firebase वातावरण को सुरक्षित करने के लिए खुली पहुंच से कम से कम विशेषाधिकार वाले सिद्धांत पर जाने की आवश्यकता होती है।
- प्रमाणीकरण लागू करें: सुनिश्चित करें कि सभी संवेदनशील पथों को यह जांच कर एक वैध उपयोगकर्ता सत्र की आवश्यकता है कि क्या
request.authऑब्जेक्ट शून्य [S3] नहीं है। - पहचान-आधारित पहुंच लागू करें: ऐसे नियम कॉन्फ़िगर करें जो उपयोगकर्ता के यूआईडी (
request.auth.uid) की तुलना दस्तावेज़ के भीतर एक फ़ील्ड या दस्तावेज़ आईडी से करें ताकि यह सुनिश्चित हो सके कि उपयोगकर्ता केवल अपने डेटा [S3] तक पहुंच सकते हैं। - ग्रेन्युलर अनुमति स्कोपिंग: संग्रह के लिए वैश्विक वाइल्डकार्ड से बचें। इसके बजाय, संभावित हमले की सतह [S2] को कम करने के लिए प्रत्येक संग्रह और उप-संग्रह के लिए विशिष्ट नियम परिभाषित करें।
- एमुलेटर सूट के माध्यम से सत्यापन: स्थानीय स्तर पर सुरक्षा नियमों का परीक्षण करने के लिए Firebase एमुलेटर सूट का उपयोग करें। यह लाइव वातावरण [S2] पर तैनात करने से पहले विभिन्न उपयोगकर्ता व्यक्तित्वों के विरुद्ध पहुंच नियंत्रण तर्क के सत्यापन की अनुमति देता है।
FixVibe इसका परीक्षण कैसे करता है
FixVibe में अब इसे केवल पढ़ने के लिए ZXCVFIXVIBTOKEN13ZXCV स्कैन के रूप में शामिल किया गया है। baas.firebase-rules आधुनिक initializeApp(...) बंडल आकार सहित समान मूल जावास्क्रिप्ट बंडलों से Firebase कॉन्फ़िगरेशन निकालता है, फिर रीयलटाइम डेटाबेस, फायरस्टोर और Firebase स्टोरेज को अप्रमाणित रीड-ओनली अनुरोधों के साथ जांचता है। फायरस्टोर के लिए, यह पहले रूट संग्रह सूची का प्रयास करता है; जब लिस्टिंग अवरुद्ध हो जाती है, तो यह सामान्य संवेदनशील संग्रह नामों की भी जांच करता है जैसे कि users, accounts, customers, ZXCVFIXVIBTOKEN5ZXCV, ZXCVFIXVIBTOKEN6ZXCV, messages, ZXCVFIXVIBTOKEN8ZXCV, और ZXCVFIXVIBTOKEN9ZXCV। यह केवल सफल अनाम पठन या लिस्टिंग की रिपोर्ट करता है और ग्राहक दस्तावेज़ सामग्री को लिखता, हटाता या संग्रहीत नहीं करता है।
