Firebase रीयल टाइम डेटाबेस के सुरक्षा नियमों को समझें

Firebase रीयल टाइम डेटाबेस के सुरक्षा नियमों से यह तय होता है कि किसे आपके डेटाबेस, आपके डेटा को कैसे स्ट्रक्चर किया जाता है, और कौनसे इंडेक्स मौजूद हैं. ये नियम Firebase सर्वर पर मौजूद रहते हैं और हमेशा अपने-आप लागू होते रहते हैं. पढ़ने की हर गतिविधि और लिखने का अनुरोध केवल तभी पूरा होगा, जब आपके नियम इसकी अनुमति देंगे. डिफ़ॉल्ट रूप से, आपके नियमों की वजह से कोई भी व्यक्ति आपके डेटाबेस को ऐक्सेस नहीं कर सकता. ऐसा तब तक किया जाता है, जब तक आपके पास अपने नियमों को पसंद के मुताबिक बनाने या पुष्टि करने की सुविधा सेट अप करने का समय नहीं होता.

रीयलटाइम डेटाबेस के सुरक्षा नियमों का सिंटैक्स, JavaScript जैसा होता है. ये चार तरह के होते हैं:

नियम के टाइप
.read इससे यह पता चलता है कि उपयोगकर्ता, डेटा को कब पढ़ सकते हैं.
.write यह बताता है कि डेटा लिखने की अनुमति है या नहीं और कब है.
.verification इससे तय होता है कि सही तरीके से फ़ॉर्मैट की गई वैल्यू कैसी दिखेगी चाइल्ड एट्रिब्यूट और डेटा टाइप मौजूद है.
.indexOn इस नीति से किसी चाइल्ड को इंडेक्स करने के लिए कहा जाता है, ताकि उसे क्रम से लगाया जा सके और क्वेरी की जा सके.

Realtime Database की सुरक्षा से जुड़ी खास जानकारी

Firebase Realtime Database, आपके ऐप्लिकेशन की सुरक्षा को मैनेज करने के लिए, टूल का पूरा सेट उपलब्ध कराता है. इन टूल की मदद से, उपयोगकर्ताओं की पुष्टि करना, उपयोगकर्ता की अनुमतियां लागू करना, और इनपुट की पुष्टि करना आसान हो जाता है.

Firebase में चलने वाले ऐप्लिकेशन, कई अन्य ऐप्लिकेशन के मुकाबले ज़्यादा क्लाइंट-साइड कोड चलाते हैं स्टैक है. इसलिए, हो सकता है कि हम सुरक्षा के लिए, आपके इस्तेमाल किए जा रहे तरीकों से अलग तरीका अपनाएं.

पुष्टि करना

अपने ऐप्लिकेशन को सुरक्षित रखने का एक सामान्य पहला कदम यह है उपयोगकर्ताओं की पहचान करता है. इस प्रोसेस को पुष्टि करना कहा जाता है. उपयोगकर्ताओं को अपने ऐप्लिकेशन में साइन इन करने के लिए, Firebase Authentication का इस्तेमाल किया जा सकता है. Firebase Authentication में, पुष्टि करने के सामान्य तरीकों के लिए ड्रॉप-इन सहायता शामिल है. जैसे, Google और Facebook के साथ-साथ ईमेल और पासवर्ड से लॉगिन करना, बिना नाम के लॉगिन करना वगैरह.

उपयोगकर्ता की पहचान, सुरक्षा का एक अहम सिद्धांत है. हर उपयोगकर्ता के पास अलग-अलग कभी-कभी अलग-अलग क्षमताओं का इस्तेमाल किया जाता है. उदाहरण के लिए, किसी चैट में किसी भी ऐप्लिकेशन को कॉन्फ़िगर किया जाता है, तो हर मैसेज उस उपयोगकर्ता से जुड़ा होता है जिसने उसे बनाया है. लोग अपने मैसेज मिटा सकते हैं, लेकिन दूसरे लोगों ने उपयोगकर्ता.

अनुमति देना

अपने उपयोगकर्ता की पहचान करना सुरक्षा का सिर्फ़ एक हिस्सा है. उनके बारे में जानने के बाद, को अपने डेटाबेस में डेटा के लिए उनकी ऐक्सेस को कंट्रोल करने का तरीका चाहिए. रीयलटाइम डेटाबेस के सुरक्षा नियम आपको हर उपयोगकर्ता के लिए ऐक्सेस को कंट्रोल करने की सुविधा मिलती है. उदाहरण के लिए, यहां सुरक्षा से जुड़े नियमों का एक सेट दिया गया है. इस सेट के तहत, कोई भी व्यक्ति पाथ /foo/ को पढ़ सकता है, लेकिन उसमें कोई भी व्यक्ति बदलाव नहीं कर सकता:

{
  "rules": {
    "foo": {
      ".read": true,
      ".write": false
    }
  }
}

.read और .write नियम कैस्केड होते हैं, इसलिए यह नियमसेट पाथ /foo/ पर मौजूद किसी भी डेटा को पढ़ने का ऐक्सेस देता है. साथ ही, पाथ, जैसे कि /foo/bar/baz. ध्यान दें कि .read और डेटाबेस में .write नियम बहुत गहरे नियमों को ओवरराइड करते हैं, इसलिए इस उदाहरण में, /foo/bar/baz को पढ़ने का ऐक्सेस अब भी दिया जाएगा भले ही, पाथ /foo/bar/baz पर मौजूद किसी नियम का आकलन 'गलत' के तौर पर किया गया हो.

रीयलटाइम डेटाबेस के सुरक्षा नियमों में ये शामिल हैं बिल्ट-इन वैरिएबल और ऐसे फ़ंक्शन शामिल हैं जिनकी मदद से आपको दूसरे पाथ, सर्वर-साइड टाइमस्टैंप, पुष्टि करने की जानकारी के बारे में जानने के लिए के साथ और भी बहुत कुछ. यहां एक नियम का उदाहरण दिया गया है जो इसके लिए लिखने का ऐक्सेस देता है /users/<uid>/ के लिए उपयोगकर्ताओं की पुष्टि की गई, जहां <uid> इससे मेल खाता है Firebase Authentication से मिले उपयोगकर्ता का आईडी.

{
  "rules": {
    "users": {
      "$uid": {
        ".write": "$uid === auth.uid"
      }
    }
  }
}

डेटा सत्यापन

Firebase Realtime Database स्कीमालेस है. इससे चीज़ों को बदलना आसान हो जाता है हालाँकि, जब आपका ऐप्लिकेशन डिस्ट्रिब्यूट होने के लिए तैयार हो जाता है, तो यह ज़रूरी है ताकि डेटा को एक जैसा बनाया जा सके. नियमों की भाषा में एक .validate शामिल है यह नियम आपको इस्तेमाल किए गए एक जैसे एक्सप्रेशन का इस्तेमाल करके, पुष्टि करने वाला लॉजिक लागू करने की अनुमति देता है .read और .write नियमों के लिए. अंतर सिर्फ़ इतना है कि पुष्टि करने के नियम कैस्केड नहीं होते. इसलिए, डेटा को लिखने की अनुमति देने के लिए, पुष्टि करने के सभी ज़रूरी नियमों का आकलन सही के तौर पर होना चाहिए.

इन नियमों से यह लागू होता है कि /foo/ में लिखा गया डेटा, 100 से कम वर्णों वाली स्ट्रिंग होनी चाहिए:

{
  "rules": {
    "foo": {
      ".validate": "newData.isString() && newData.val().length < 100"
    }
  }
}

पुष्टि करने वाले नियमों के पास पहले से मौजूद उन सभी फ़ंक्शन का ऐक्सेस होता है जो पहले से मौजूद होते हैं और .read और .write नियम के हिसाब से वैरिएबल. Google Analytics 4 पर माइग्रेट करने के लिए, इनका इस्तेमाल, पुष्टि करने वाले ऐसे नियम बनाने के लिए किया जाता है जिन्हें आपके दूसरी जगह के डेटा के बारे में जानकारी हो डेटाबेस, आपके उपयोगकर्ता की पहचान, सर्वर का समय वगैरह.

डेटाबेस इंडेक्स की परिभाषा तय करना

Firebase Realtime Database की मदद से, डेटा को ऑर्डर किया जा सकता है और क्वेरी की जा सकती है. छोटे डेटा के लिए का इस्तेमाल करते हैं, तो डेटाबेस एड-हॉक क्वेरी का समर्थन करता है, इसलिए आम तौर पर इंडेक्स जो डेवलपमेंट के दौरान ज़रूरी होता है. हालांकि, अपना ऐप्लिकेशन लॉन्च करने से पहले, यह ज़रूरी है कि का इस्तेमाल करें, ताकि आप किसी भी क्वेरी के लिए इंडेक्स तय कर सकें, ताकि यह पक्का किया जा सके कि वे इस तरह काम करती रहें आपका ऐप्लिकेशन लोकप्रिय हो रहा है.

इंडेक्स, .indexOn नियम का इस्तेमाल करके तय किए जाते हैं. यहां एक उदाहरण दिया गया है ऐसा इंडेक्स एलान जो डायनासॉर:

{
  "rules": {
    "dinosaurs": {
      ".indexOn": ["height", "length"]
    }
  }
}

अगले चरण