Cloud Firestore Security Rules কনফিগারেশনে সাধারণ দুর্বলতা বুঝতে, আপনার নিজস্ব নিয়ম পর্যালোচনা করতে এবং আরও ভালভাবে সুরক্ষিত করতে এবং আপনার পরিবর্তনগুলি প্রয়োগ করার আগে পরীক্ষা করতে এই নির্দেশিকা ব্যবহার করুন।
AI অ্যাসিস্ট্যান্সের জন্য AI প্রম্পট
AI-এর মাধ্যমে সহায়তা পেতে, নিচের প্রম্পটটি আপনার AI কোডিং এজেন্টে (যেমন, Android Studio-তে Gemini, Antigravity, Claude Code, Codex এবং Cursor) কপি করুন। আপনি প্রম্পট কাস্টমাইজ করতে এবং আপনার এজেন্টের সাথে আইটারেট করতে পারবেন। ইনস্টলেশন সংক্রান্ত বিস্তারিত তথ্যের জন্য Firebase এজেন্ট সংক্রান্ত দক্ষতা দেখুন।
Help me use Firebase in my app.
1. Make sure that **Firebase agent skills** are installed and updated. For Claude Code, Codex, or Cursor agents, help me install the Firebase plugin. For other agents, run `npx skills add firebase/agent-skills`. Always try to use **Firebase agent skills** for Firebase-related tasks.
2. Help me write, validate, and deploy Firebase Security Rules to protect my app's Firestore data.
আপনার Cloud Firestore ডেটাবেস সঠিকভাবে সুরক্ষিত নয় বলে কোনও সতর্কতা পেলে, আপনি Cloud Firestore Security Rules-এ পরিবর্তন করে ও পরীক্ষা করে সমস্যার সমাধান করতে পারবেন।
আপনার আগে থেকে থাকা নিরাপত্তা সংক্রান্ত নিয়ম দেখতে, Firebase কনসোলের নিয়ম ট্যাবে যান।
আপনার Cloud Firestore Security Rules বোঝা
Cloud Firestore Security Rules ক্ষতিকর ব্যবহারকারীদের থেকে আপনার ডেটা সুরক্ষিত রাখে। Firebase কনসোলে তৈরি করা যেকোনও Cloud Firestore ইনস্ট্যান্সের জন্য ডিফল্ট নিয়ম সব ব্যবহারকারীর অ্যাক্সেস প্রত্যাখ্যান করে। আপনার অ্যাপ ডেভেলপ করতে এবং ডেটাবেস অ্যাক্সেস করতে, আপনাকে সেইসব নিয়ম পরিবর্তন করতে হবে এবং ডেভেলপমেন্ট এনভায়রনমেন্টে সব ব্যবহারকারীকে ব্ল্যাঙ্কেট অ্যাক্সেস দেওয়ার কথা বিবেচনা করতে পারেন। তবে, প্রোডাকশন এনভায়রনমেন্টে আপনার অ্যাপ ডিপ্লয় করার আগে, আপনার নিয়মাবলী সঠিকভাবে কনফিগার করতে এবং আপনার ডেটা সুরক্ষিত করতে সময় নিন।
আপনি অ্যাপ ডেভেলপ করার সময় এবং আপনার নিয়মের জন্য বিভিন্ন কনফিগারেশন পরীক্ষা করার সময়, একটি লোকাল ডেভেলপমেন্ট এনভায়রনমেন্টে আপনার অ্যাপ চালানোর জন্য Cloud Firestore এমুলেটর ব্যবহার করুন।
অসুরক্ষিত নিয়ম সহ সাধারণ পরিস্থিতি
আপনি ডিফল্ট হিসেবে বা Cloud Firestore-এর সাহায্যে অ্যাপ ডেভেলপ করার সময় প্রাথমিকভাবে যে Cloud Firestore Security Rules সেট-আপ করেছেন, অ্যাপ ডিপ্লয় করার আগে তা পর্যালোচনা ও আপডেট করতে হবে। নিম্নলিখিত সাধারণ ভুলগুলি এড়িয়ে গিয়ে ব্যবহারকারীর ডেটা যথাযথভাবে সুরক্ষিত করুন।
ওপেন অ্যাক্সেস
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 Authentication-এর সাথে ব্যবহারকারী-ভিত্তিক নিরাপত্তা। নিয়ম মেনে ব্যবহারকারীদের যাচাই করা সম্পর্কে আরও জানুন। |
শুধুমাত্র কন্টেন্টের মালিক
service cloud.firestore { match /databases/{database}/documents { // Allow only authenticated content owners access match /some_collection/{document} { // Allow reads and deletion if the current user owns the existing document allow read, delete: if request.auth.uid == resource.data.author_uid; // Allow creation if the current user owns the new document allow create: if request.auth.uid == request.resource.data.author_uid; // Allow updates by the owner, and prevent change of ownership allow update: if request.auth.uid == request.resource.data.author_uid && request.auth.uid == 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 public reads allow read: if true // Allow creation if the current user owns the new document allow create: if request.auth.uid == request.resource.data.author_uid; // Allow updates by the owner, and prevent change of ownership allow update: if request.auth.uid == request.resource.data.author_uid && request.auth.uid == resource.data.author_uid; // Allow deletion if the current user owns the existing document allow delete: if request.auth.uid == resource.data.author_uid; } } }
যাচাই করা যেকোনও ব্যবহারকারীর জন্য অ্যাক্সেস
কখনও কখনও, Cloud Firestore Security Rules চেক করে যে কোনও ব্যবহারকারী লগ-ইন করেছেন কিনা, তবে সেই যাচাইকরণের উপর ভিত্তি করে
অ্যাক্সেস আরও সীমাবদ্ধ করে না। আপনার কোনও নিয়মে
auth != null অন্তর্ভুক্ত থাকলে, লগ-ইন করা যেকোনও ব্যবহারকারীকে ডেটা অ্যাক্সেস করার অনুমতি দিতে চান কিনা তা কনফার্ম করুন।
| সাজেস্ট করা হয় না: লগ-ইন করা যেকোনও ব্যবহারকারীর কাছে আপনার সম্পূর্ণ ডেটাবেস পড়া ও লেখার অ্যাক্সেস আছে। |
service cloud.firestore { match /databases/{database}/documents { match /some_collection/{document} { allow read, write: if request.auth != null; } } }
|
সমাধান: নিরাপত্তা সংক্রান্ত শর্তাবলী ব্যবহার করে
অ্যাক্সেস সীমিত করুন।
যাচাইকরণের জন্য চেক করার সময়, নির্দিষ্ট ডেটা সেটের জন্য নির্দিষ্ট ব্যবহারকারীর অ্যাক্সেস আরও সীমিত করতে, আপনি যাচাইকরণের কোনও একটি প্রপার্টিও ব্যবহার করতে চাইতে পারেন। নিরাপত্তা সংক্রান্ত শর্ত যোগ করা এবং ভূমিকা-ভিত্তিক অ্যাক্সেস সম্পর্কে আরও জানুন। |
ভূমিকা-ভিত্তিক অ্যাক্সেস
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
}
}
}
যাচাই না করা ইমেল আইডির জন্য অ্যাক্সেস
কখনও কখনও, Cloud Firestore Security Rules চেক করে যে ব্যবহারকারীর ইমেল কোনও নির্দিষ্ট ডোমেনের কিনা। এটি সাধারণত একটি ভালো অভ্যাস হলেও, সাইন-ইন করার সময় ইমেল সবসময় যাচাই করা হয় না, যতক্ষণ না ব্যবহারকারী যাচাইকরণ ইমেল পাওয়ার পরে একটি অতিরিক্ত ধাপ সম্পূর্ণ করেন। আপনাকে নিশ্চিত করতে হবে যে ইমেলটি আসলে ব্যবহারকারীরই।
| সাজেস্ট করা হয় না: যেকোনও ব্যবহারকারী যেকোনও ইমেল আইডি দিয়ে সাইন-ইন করতে পারবেন। |
service cloud.firestore { match /databases/{database}/documents { // Allow access based on email domain match /some_collection/{document} { allow read: if request.auth != null && request.auth.email.endsWith('@example.com') } } }
| সমাধান: শুধুমাত্র যাচাই করা ইমেলে অ্যাক্সেস সীমিত করুন। |
ইমেল যাচাই করুন
service cloud.firestore { match /databases/{database}/documents { // Allow access based on email domain match /some_collection/{document} { allow read: if request.auth != null && request.auth.email_verified && request.auth.email.endsWith('@example.com') } } }
বন্ধ অ্যাক্সেস
আপনার অ্যাপ ডেভেলপ করার সময়, আরেকটি সাধারণ পদ্ধতি হল আপনার ডেটা লক করে রাখা। সাধারণত, এর অর্থ হল আপনি সব ব্যবহারকারীর জন্য রিড ও রাইট অ্যাক্সেস বন্ধ করে দিয়েছেন, যেমন:
// 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 Admin SDK এবং Cloud Functions এখনও আপনার ডেটাবেস অ্যাক্সেস করতে পারবে। আপনি যখন Firebase অ্যাডমিন SDK-এর সাথে শুধুমাত্র সার্ভার ব্যাকএন্ড হিসেবে Cloud Firestore ব্যবহার করতে চান, তখন এই নিয়মগুলি ব্যবহার করুন। এটি সুরক্ষিত হলেও, আপনার অ্যাপের ক্লায়েন্টরা সঠিকভাবে ডেটা ফিরিয়ে আনতে পারছে কিনা তা আপনার পরীক্ষা করে দেখা উচিত।
Cloud Firestore Security Rules এবং সেগুলি কীভাবে কাজ করে সেই সম্পর্কে আরও জানুন Cloud Firestore Security Rules-এর সাথে শুরু করুন।
আপনার Cloud Firestore Security Rules চেক করুন
আপনার অ্যাপের আচরণ চেক করতে এবং আপনার Cloud Firestore Security Rules কনফিগারেশন যাচাই করতে, Cloud Firestore এমুলেটর ব্যবহার করুন। কোনও পরিবর্তন প্রয়োগ করার আগে লোকাল এনভায়রনমেন্টে ইউনিট টেস্ট রান ও অটোমেট করতে Cloud Firestore এমুলেটর ব্যবহার করুন।
Firebase কনসোলে আপনার আপডেট করা Cloud Firestore Security Rules দ্রুত পরীক্ষা করতে, Rules Playground টুল ব্যবহার করুন।

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