असुरक्षित नियमों को ठीक करें

Cloud Firestore के सुरक्षा नियमों में आम तौर पर होने वाले जोखिम की आशंकाओं को समझने के लिए, इस गाइड का इस्तेमाल करें कॉन्फ़िगरेशन, समीक्षा, और अपने नियमों को बेहतर ढंग से सुरक्षित करने, और बदलावों को लागू करने से पहले उनकी जांच करें.

अगर आपको यह सूचना मिलती है कि आपका Cloud Firestore डेटाबेस सही तरीके से सुरक्षित नहीं है, आप जोखिम की आशंकाओं को ठीक करने के लिए, Cloud Firestore के सुरक्षा नियम.

सुरक्षा के मौजूदा नियम देखने के लिए, नियम टैब पर जाएं देखें.

अपने Cloud Firestore के सुरक्षा नियमों को समझें

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

जैसे-जैसे आप अपना ऐप्लिकेशन डेवलप कर रहे होते हैं ��र अपने ऐप्लिकेशन के लिए अलग-अलग कॉन्फ़िगरेशन की जांच कर रहे होते हैं नियम, तो Cloud Firestore एम्युलेटर का इस्तेमाल करके एक लोकल डेवलपमेंट एनवायरमेंट की ज़रूरत होती है.

असुरक्षित नियमों वाली सामान्य स्थितियां

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

ओपन ऐक्सेस

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

इसका सुझाव नहीं दिया जाता: सभी ऐप्लिकेशन के लिए पढ़ने और लिखने का ऐक्सेस उपयोगकर्ता.
// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this rule set in production; it allows
// anyone to overwrite your entire database.

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}
समाधान: ऐसे नियम जो पढ़ने पर पाबंदी लगाते हैं और लिखने का ऐक्सेस.

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

सिर्फ़ कॉन्टेंट के मालिक के लिए

service cloud.firestore {
  match /databases/{database}/documents {
    // Allow only authenticated content owners access
    match /some_collection/{document} {
      allow read, write: if request.auth != null && request.auth.uid == request.resource.data.author_uid
    }
  }
}
  

सार्वजनिक और निजी, दोनों तरह का मिला-जुला ऐक्सेस

service cloud.firestore {
  match /databases/{database}/documents {
    // Allow public read access, but only content owners can write
    match /some_collection/{document} {
      allow read: if true
      allow write: if request.auth != null && request.auth.uid == request.resource.data.author_uid
    }
  }
}
  

किसी भी पुष्टि किए गए उपयोगकर्ता के लिए ऐक्सेस

कभी-कभी, Cloud Firestore के सुरक्षा नियम यह जांच करते हैं कि उपयोगकर्ता ने लॉग इन किया है या नहीं, लेकिन उस प्रमाणीकरण के आधार पर एक्सेस प्रतिबंधित करते हैं. अगर आपके किसी नियम में शामिल है auth != null, पुष्टि करें कि आपको जिस उपयोगकर्ता ने लॉग-इन किया हुआ है उसे डेटा शामिल है.

इसका सुझाव नहीं दिया जाता: किसी भी लॉग-इन किए हुए उपयोगकर्ता ने पढ़ लिया है और अपने पूरे डेटाबेस में लिखने के लिए ऐक्सेस दें.
service cloud.firestore {
  match /databases/{database}/documents {
    match /some_collection/{document} {
      allow read, write: if request.auth != null;
    }
  }
}
समाधान: सुरक्षा का इस्तेमाल करके ऐक्सेस को सीमित करें conditions.

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

भूमिका के हिसाब से ऐक्सेस

service cloud.firestore {
  match /databases/{database}/documents {
    // Assign roles to all users and refine access based on user roles
    match /some_collection/{document} {
     allow read: if request.auth != null && get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == "Reader"
     allow write: if request.auth != null && get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == "Writer"

     // Note: Checking for roles in your database using `get` (as in the code
     // above) or `exists` carry standard charges for read operations.
    }
  }
}

एट्रिब्यूट पर आधारित ऐक्सेस

// Give each user in your database a particular attribute
// and set it to true/false
// Then, use that attribute to grant access to subsets of data
// For example, an "admin" attribute set
// to "true" grants write access to data

service cloud.firestore {
  match /databases/{database}/documents {
    match /collection/{document} {
      allow write: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.admin == true;
      allow read: true;
    }
  }
}
  

सार्वजनिक और निजी, दोनों तरह का मिला-जुला ऐक्सेस

service cloud.firestore {
  match /databases/{database}/documents {
    // Allow public read access, but only content owners can write
    match /some_collection/{document} {
      allow read: if true
      allow write: if request.auth.uid == request.resource.data.author_uid
    }
  }
}
  

बंद ऐक्सेस

अपना ऐप्लिकेशन डेवलप करते समय, एक और सामान्य तरीका यह है कि अपने डेटा लॉक किया गया. आम तौर पर, इसका मतलब है कि आपने 'रीड ऐंड राइट' सुविधा बंद कर दी है सभी लोगों को इसकी जानकारी दी जाएगी:

// Deny read/write access to all users under any conditions
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

Firebase एडमिन SDK टूल और Cloud Functions, अब भी आपकी डेटाबेस. Cloud Firestore का इस्तेमाल सिर्फ़ सर्वर के तौर पर करने के लिए, इन नियमों का इस्तेमाल करें Firebase के साथ बैकएंड के साथ काम करता है एडमिन SDK टूल. हालांकि यह सुरक्षित है, लेकिन आपको यह टेस्ट करना चाहिए कि आपके ऐप्लिकेशन के क्लाइंट वे डेटा को सही तरीके से वापस पा सकें.

Cloud Firestore के सुरक्षा नियमों और उनके काम करने के तरीके के बारे में ज़्यादा जानें Cloud Firestore के सुरक्षा नियमों का इस्तेमाल शुरू करें.

अपने Cloud Firestore के सुरक्षा नियमों की जांच करें

अपने ऐप्लिकेशन के व्यवहार की जांच करने और Cloud Firestore के सुरक्षा नियमों के कॉन्फ़िगरेशन की पुष्टि करने के लिए, Cloud Firestore एम्युलेटर का इस्तेमाल करें. Cloud Firestore का इस्तेमाल करना डिप्लॉय करने से पहले, लोकल एनवायरमेंट में यूनिट टेस्ट को चलाने और उन्हें ऑटोमेट करने के लिए एम्युलेटर कोई भी बदलाव.

Firebase कंसोल में, अपने अपडेट किए गए Cloud Firestore के सुरक्षा नियमों की तेज़ी से जांच करने के लिए, इसका इस्तेमाल करें 'नियम प्लेग्राउंड टूल' पर क्लिक करें.

  1. 'नियम का प्लेग्राउंड' खोलने क��� लिए, नियमों का प्लेग्राउंड पर क्लिक करें नियम टैब.
  2. नियमों के प्लेग्राउंड सेटिंग में जाकर, अपने टेस्ट के लिए विकल्प चुनें, जिनमें शामिल हैं:
    • जांच के लिए टेक्स्ट पढ़ने या लिखने की सुविधा
    • पाथ के तौर पर, आपके डेटाबेस में जगह की जानकारी
    • पुष्टि करने का टाइप — पुष्टि न किया गया, पहचान छिपाने वाला ऐसा उपयोगकर्ता या खास यूज़र आईडी
    • दस्तावेज़ से जुड़ा ऐसा डेटा जिसका रेफ़रंस आपके नियमों में खास तौर पर लिया जाता है ( उदाहरण के लिए, अगर आपके नियमों के लिए पहले लिखने की अनुमति दें)
  3. Run पर क्लिक करें और नियमों वाली विंडो के ऊपर मौजूद बैनर में नतीजे देखें.