इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

फायरबेस रियलटाइम डेटाबेस नियमों को समझें

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

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

नियम प्रकार
.read वर्णन करता है कि क्या और कब डेटा को उपयोगकर्ताओं द्वारा पढ़ने की अनुमति है।
।लिखो यह बताता है कि क्या और कब डेटा को लिखने की अनुमति है।
.validate परिभाषित करता है कि सही ढंग से स्वरूपित मूल्य कैसा दिखेगा, चाहे उसमें बाल विशेषताएँ हों, और डेटा प्रकार।
.indexOn आदेश देने और क्वेरी करने के लिए अनुक्रमणिका के लिए एक बच्चे को निर्दिष्ट करता है।

रीयलटाइम डेटाबेस सुरक्षा अवलोकन

फायरबेस रियलटाइम डेटाबेस आपके ऐप की सुरक्षा के प्रबंधन के लिए उपकरणों का एक पूरा सेट प्रदान करता है। ये उपकरण आपके उपयोगकर्ताओं को प्रमाणित करने, उपयोगकर्ता अनुमतियों को लागू करने और इनपुट को मान्य करने के लिए आसान बनाते हैं।

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

प्रमाणीकरण

आपके एप्लिकेशन को सुरक्षित करने का एक सामान्य पहला चरण आपके उपयोगकर्ताओं की पहचान करना है। इस प्रक्रिया को प्रमाणीकरण कहा जाता है । उपयोगकर्ताओं को अपने ऐप में साइन इन करने के लिए आप फायरबेस प्रमाणीकरण का उपयोग कर सकते हैं। फायरबेस प्रमाणीकरण में Google और फेसबुक जैसी सामान्य प्रमाणीकरण विधियों के साथ-साथ ईमेल और पासवर्ड लॉगिन, अनाम लॉगिन और बहुत कुछ के लिए ड्रॉप-इन समर्थन शामिल है।

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

प्राधिकरण

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

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

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

रीयलटाइम डेटाबेस नियम में अंतर्निर्मित चर और फ़ंक्शंस शामिल हैं जो आपको अन्य रास्तों, सर्वर-साइड टाइमस्टैम्प, प्रमाणीकरण जानकारी और अधिक का उल्लेख करने की अनुमति देते हैं। यहां एक नियम का उदाहरण दिया गया है जो प्रमाणित उपयोगकर्ताओं के लिए /users/<uid>/ लिए पहुंच लिखते हैं, जहां <uid> फायरबेस प्रमाणीकरण के माध्यम से प्राप्त उपयोगकर्ता की आईडी है।

{
  "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 है। आप सत्यापन नियमों को बनाने के लिए इनका उपयोग कर सकते हैं जो आपके डेटाबेस, आपके उपयोगकर्ता की पहचान, सर्वर समय और कहीं और डेटा के बारे में जानते हैं।

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

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

इंडेक्स .indexOn नियम का उपयोग करके निर्दिष्ट किए जाते हैं। यहां एक उदाहरण सूचकांक घोषणा है जो डायनासोर की सूची के लिए ऊंचाई और लंबाई के क्षेत्रों को अनुक्रमित करेगी:

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

अगला कदम