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

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

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

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

रीयलटाइम डेटाबेस की सुरक्षा के बारे में खास जानकारी

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

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

पुष्टि करना

अपने ऐप्लिकेशन को सुरक्षित रखने का एक सामान्य पहला कदम यह है उपयोगकर्ताओं की पहचान करता है. इस प्रोसेस को पुष्टि करना कहते हैं. Firebase से पुष्टि करने की सुविधा का इस्तेमाल किया जा सकता है उपयोगकर्ताओं को आपके ऐप्लिकेशन में साइन इन करने के लिए कहना. Firebase से पुष्टि करना में पुष्टि करने के सामान्य तरीकों के लिए ड्रॉप-इन सहायता शामिल है. जैसे- 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 से पुष्टि करने की सुविधा के ज़रिए मिला उपयोगकर्ता का आईडी.

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

डेटा सत्यापन

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

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

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

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

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

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

इंडेक्स की जानकारी, .indexOn नियम का इस्तेमाल करके दी जाती है. यहां एक उदाहरण दिया गया है इंडेक्स डिक्लेरेशन जो सूची के लिए लंबाई और लंबाई वाले फ़ील्ड को इंडेक्स करेगा डायनासॉर:

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

अगले चरण