Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

নিরাপত্তাহীন নিয়ম এড়িয়ে চলুন

ফায়ারবেস সিকিউরিটি রুলস কনফিগারেশনে সাধারণ দুর্বলতাগুলি বোঝার জন্য এই নির্দেশিকাটি ব্যবহার করুন, আপনার নিজের নিয়মগুলি পর্যালোচনা করুন এবং আরও ভালভাবে সুরক্ষিত করুন এবং সেগুলি স্থাপন করার আগে আপনার পরিবর্তনগুলি পরীক্ষা করুন।

যদি আপনি একটি সতর্কতা পান যে আপনার ডেটা সঠিকভাবে সুরক্ষিত নয়, এই সাধারণভাবে তৈরি ত্রুটিগুলি পর্যালোচনা করুন এবং যে কোনও দুর্বল নিয়ম আপডেট করুন।

আপনার ফায়ারবেস নিরাপত্তা বিধি অ্যাক্সেস করুন

আপনার বিদ্যমান নিয়মগুলি দেখতে, Firebase CLI অথবা Firebase কনসোল ব্যবহার করুন। ভুল করে ওভাররাইট করা আপডেটগুলি এড়াতে, একই পদ্ধতি ব্যবহার করে আপনার নিয়মগুলি নিয়মিতভাবে সম্পাদনা করুন তা নিশ্চিত করুন। যদি আপনি নিশ্চিত না হন যে আপনার স্থানীয়ভাবে সংজ্ঞায়িত নিয়মগুলি সাম্প্রতিক আপডেটগুলি প্রতিফলিত করে কিনা, ফায়ারবেস কনসোল সর্বদা আপনার ফায়ারবেস নিরাপত্তা বিধিমালার সাম্প্রতিকতম স্থাপন করা সংস্করণ দেখায়।

থেকে আপনার নিয়ম অ্যাক্সেস করতে Firebase কনসোল , রিয়েলটাইম ডাটাবেস, ক্লাউড Firestore বা স্টোরেজ আপনার প্রকল্প নির্বাচন করুন, তারপর নেভিগেট করুন। বিধি ক্লিক করুন একবার আপনি সঠিক ডাটাবেসের বা স্টোরেজ বালতি আছেন।

Firebase CLI থেকে আপনার নিয়ম অ্যাক্সেস করতে, আপনার উল্লেখ করা নিয়ম ফাইলে যেতে firebase.json ফাইল

ফায়ারবেস সিকিউরিটি রুলস বুঝুন

ফায়ারবেস সিকিউরিটি রুলস আপনার ডেটা দূষিত ব্যবহারকারীদের থেকে রক্ষা করে। যখন আপনি একটি ডাটাবেস ইনস্ট্যান্স বা Firebase কনসোলে ক্লাউড স্টোরেজ বালতি তৈরি করেন, আপনি করতে পছন্দ করে নিন হয় (লক মোড) অ্যাক্সেসের মঞ্জুরি দিন সমস্ত ব্যবহারকারী (টেস্ট মোড) থেকে সকল ব্যবহারকারীর জন্য অ্যাক্সেস বা অস্বীকার করতে পারেন। যদিও আপনি বিকাশের সময় আরও খোলা কনফিগারেশন চাইতে পারেন, আপনার অ্যাপটি স্থাপন করার আগে আপনার নিয়মগুলি সঠিকভাবে কনফিগার করতে এবং আপনার ডেটা সুরক্ষিত করতে সময় নিন তা নিশ্চিত করুন।

আপনি আপনার অ্যাপ্লিকেশন উন্নয়নশীল এবং আপনার বিধিগুলি জন্য বিভিন্ন কনফিগারেশনের পরীক্ষা করছি হিসাবে, একটি ব্যবহার স্থানীয় Firebase emulators একটি স্থানীয় উন্নয়ন পরিবেশে আপনার অ্যাপ্লিকেশন চালানোর জন্য।

অনিরাপদ নিয়মের সাথে সাধারণ দৃশ্য

আপনি যে নিয়মগুলি ডিফল্টরূপে সেট আপ করতে পারেন বা আপনার অ্যাপটি ডেভেলপ করার জন্য প্রাথমিকভাবে কাজ করেছেন সেগুলি আপনার অ্যাপ স্থাপনের আগে পর্যালোচনা এবং আপডেট করা উচিত। নিম্নলিখিত সাধারণ সমস্যাগুলি এড়িয়ে আপনার ব্যবহারকারীদের ডেটা সঠিকভাবে সুরক্ষিত করুন তা নিশ্চিত করুন।

সবার প্রবেশাধিকার

আপনি যখন আপনার ফায়ারবেস প্রজেক্টটি সেট আপ করছেন, আপনি হয়তো উন্নয়নের সময় খোলা অ্যাক্সেসের অনুমতি দেওয়ার জন্য আপনার নিয়মগুলি সেট করেছেন। আপনি মনে করতে পারেন যে আপনি একমাত্র ব্যক্তি যিনি আপনার অ্যাপটি ব্যবহার করছেন, কিন্তু আপনি যদি এটি ব্যবহার করেন তবে এটি ইন্টারনেটে উপলব্ধ। আপনি যদি ব্যবহারকারীদের প্রমাণীকরণ না করেন এবং নিরাপত্তা নিয়ম কনফিগার না করেন, তাহলে যে কেউ আপনার প্রোজেক্ট আইডি অনুমান করে সে ডেটা চুরি, সংশোধন বা মুছে ফেলতে পারে।

না বাঞ্ছনীয়: পড়ুন ও সকল ব্যবহারকারীর জন্য লেখ অ্যাক্সেস।

ক্লাউড ফায়ারস্টোর

// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this ruleset in production; it allows
// anyone to overwrite your entire database.

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

রিয়েলটাইম ডাটাবেস

{
  // Allow read/write access to all users under any conditions
  // Warning: **NEVER** use this ruleset in production; it allows
  // anyone to overwrite your entire database.

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

মেঘ স্টোরেজ

// Anyone can read or write to the bucket, even non-users of your app.
// Because it is shared with App Engine, this will also make
// files uploaded via App Engine public.
// Warning: This rule makes every file in your Cloud Storage bucket accessible to any user.
// Apply caution before using it in production, since it means anyone
// can overwrite all your files.

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}
    
সমাধান: বিধি জারি করে যে পড়া এবং লেখার অ্যাক্সেস সীমাবদ্ধ করুন।

আপনার ডেটা শ্রেণিবিন্যাসের জন্য অর্থপূর্ণ নিয়ম তৈরি করুন। এই নিরাপত্তাহীনতার একটি সাধারণ সমাধান হল Firebase প্রমাণীকরণের সাথে ব্যবহারকারী-ভিত্তিক নিরাপত্তা। সম্পর্কে আরও জানুন নিয়ম ব্যবহারকারীদের অনুমোদন

ক্লাউড ফায়ারস্টোর

রিয়েলটাইম ডাটাবেস

মেঘ স্টোরেজ

যে কোনও অনুমোদিত ব্যবহারকারীর জন্য অ্যাক্সেস

কখনও কখনও, নিয়মগুলি পরীক্ষা করে যে একজন ব্যবহারকারী লগ ইন করেছেন, কিন্তু সেই প্রমাণীকরণের উপর ভিত্তি করে অ্যাক্সেসকে আরও সীমাবদ্ধ করবেন না। আপনার বিধিগুলি এক অন্তর্ভুক্ত থাকে auth != null নিশ্চিত যদি আপনি কোন লগ-ইন ব্যবহারকারী ডেটাতে অ্যাক্সেস করতে চান যে।

না বাঞ্ছনীয়: যেকোনো লগ-ইন ব্যবহারকারী পড়ুন এবং আপনার সম্পূর্ণ ডাটাবেসের সাথে লেখার অ্যাক্সেস আছে।

ক্লাউড ফায়ারস্টোর

service cloud.firestore {
  match /databases/{database}/documents {
    match /some_collection/{document} {
      allow read, write: if request.auth.uid != null;
    }
  }
}

রিয়েলটাইম ডাটাবেস

{
  "rules": {
    ".read": "auth.uid != null",
    ".write": "auth.uid != null"
  }
}

মেঘ স্টোরেজ

// Only authenticated users can read or write to the bucket
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}
সমাধান: ন্যারো এক্সেস নিরাপত্তা অবস্থার ব্যবহার করে।

যখন আপনি প্রমাণীকরণের জন্য চেক করছেন, আপনি নির্দিষ্ট ডেটা সেটের জন্য নির্দিষ্ট ব্যবহারকারীদের অ্যাক্সেসকে আরও সীমাবদ্ধ করতে প্রমাণীকরণের বৈশিষ্ট্যগুলির মধ্যে একটি ব্যবহার করতে চাইতে পারেন। বিভিন্ন বিষয়ে আরো জানুন প্রমাণীকরণ বৈশিষ্ট্য

ক্লাউড ফায়ারস্টোর

রিয়েলটাইম ডাটাবেস

মেঘ স্টোরেজ

(রিয়েলটাইম ডাটাবেস) অনুপযুক্ত উত্তরাধিকারসূত্রে প্রাপ্ত নিয়ম

রিয়েলটাইম ডাটাবেস রুলস ক্যাসকেড, আরো অগভীর, পিতামাতার পথগুলি গভীর, চাইল্ড নোডগুলিতে নিয়মগুলি অতিক্রম করে। যখন আপনি একটি শিশু নোডে একটি নিয়ম লিখবেন, মনে রাখবেন এটি শুধুমাত্র অতিরিক্ত সুযোগ -সুবিধা প্রদান করতে পারে। আপনি আপনার ডাটাবেসের একটি গভীর পথে ডেটা অ্যাক্সেস পরিমার্জন বা বাতিল করতে পারবেন না।

না বাঞ্ছনীয়: সন্তানের পাথ এ বিশোধক নিয়ম
{
  "rules": {
     "foo": {
        // allows read to /foo/*
        ".read": "data.child('baz').val() === true",
        "bar": {
          /* ignored, since read was allowed already */
          ".read": false
        }
     }
  }
}
সমাধান: পিতা বা মাতা পাথ যে বিস্তৃত হয়, এবং আপনার ডেটা অ্যাক্সেস প্রয়োজন আরো গ্র্যানুলারিটি প্রয়োজন, তাহলে আপনার নিয়ম ঝুরা রাখা সন্তান পাথ এ আরো নির্দিষ্ট ব্যক্তির বিশেষ সুবিধা অনুমোদন এ লিখুন নিয়ম। মধ্যে রিয়েলটাইম ডাটাবেস বিধি ক্যাসকেডিং সম্পর্কে আরো জানুন আপনার ডেটা সুরক্ষায়

অ্যাক্সেস বন্ধ

যখন আপনি আপনার অ্যাপ ডেভেলপ করছেন, আরেকটি সাধারণ পদ্ধতি হল আপনার ডেটা লকড রাখা। সাধারণত, এর অর্থ হল আপনি সমস্ত ব্যবহারকারীর পড়া এবং লেখার অ্যাক্সেস বন্ধ করে দিয়েছেন, নিম্নরূপ:

ক্লাউড ফায়ারস্টোর

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

রিয়েলটাইম ডাটাবেস

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

মেঘ স্টোরেজ

// Access to files through Cloud Storage is completely disallowed.
// Files may still be accessible through App Engine or Google Cloud Storage APIs.

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if false;
    }
  }
}

Firebase অ্যাডমিন SDKs এবং ক্লাউড ফাংশন এখনও আপনার ডাটাবেস অ্যাক্সেস করতে পারে। যখন আপনি Firebase অ্যাডমিন SDK এর সাথে মিলিত হয়ে শুধুমাত্র ক্লাউড ফায়ারস্টোর বা রিয়েলটাইম ডাটাবেসকে সার্ভার-ব্যাক-এন্ড হিসাবে ব্যবহার করতে চান তখন এই নিয়মগুলি ব্যবহার করুন। যদিও এটি নিরাপদ, আপনার পরীক্ষা করা উচিত যে আপনার অ্যাপের ক্লায়েন্ট সঠিকভাবে ডেটা পুনরুদ্ধার করতে পারে।

ক্লাউড Firestore সিকিউরিটি রুলস সম্পর্কে আরো জানুন এবং কীভাবে তারা কাজ ক্লাউড Firestore সিকিউরিটি রুলস দিয়ে শুরু করুন

আপনার ক্লাউড ফায়ারস্টোর নিরাপত্তা বিধি পরীক্ষা করুন

আপনার অ্যাপ্লিকেশনের আচরণ চেক করুন এবং আপনার ক্লাউড Firestore সিকিউরিটি রুলস কনফিগারেশনের যাচাই করতে, ব্যবহার Firebase এমুলেটর । আপনি কোনো পরিবর্তন স্থাপন করার আগে স্থানীয় পরিবেশে ইউনিট পরীক্ষা চালাতে এবং স্বয়ংক্রিয় করতে ক্লাউড ফায়ারস্টোর এমুলেটর ব্যবহার করুন।

দ্রুত যাচাই করতে Firebase কনসোলে Firebase সিকিউরিটি রুলস, ব্যবহার Firebase বিধি সিমুলেটার