Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

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

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

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

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

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

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

प्रमाणीकरण

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

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

डेटा मान्य

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

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

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

मान्यता नियमों के सभी के लिए उपयोग किया ही में निर्मित कार्यों और के रूप में चर .read और .write नियम। आप इनका उपयोग सत्यापन नियम बनाने के लिए कर सकते हैं जो आपके डेटाबेस में कहीं और डेटा, आपके उपयोगकर्ता की पहचान, सर्वर समय और बहुत कुछ के बारे में जानते हैं।

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

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

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

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

अगला कदम