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

ফায়ারবেস রিয়েলটাইম ডেটাবেস বিধিগুলি বুঝতে

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

রিয়েলটাইম ডাটাবেস সিকিউরিটি রুলসে জাভাস্ক্রিপ্ট-এর মত সিনট্যাক্স আছে এবং এটি চার প্রকারে আসে:

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

রিয়েলটাইম ডাটাবেস নিরাপত্তা ওভারভিউ

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

ফায়ারবেস-চালিত অ্যাপ্লিকেশনগুলি অন্যান্য অনেক প্রযুক্তি স্ট্যাকের তুলনায় ক্লায়েন্ট-সাইড কোড বেশি চালায়। অতএব, আমরা যেভাবে নিরাপত্তার দিকে এগিয়ে যাচ্ছি তা আপনার অভ্যস্ত হওয়ার চেয়ে কিছুটা আলাদা হতে পারে।

প্রমাণীকরণ

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

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

অনুমোদন

আপনার ব্যবহারকারীকে চিহ্নিত করা কেবল নিরাপত্তার অংশ। একবার আপনি যখন জানেন যে তারা কারা, আপনি আপনার ডাটাবেসে ডেটা তাদের অ্যাক্সেস নিয়ন্ত্রণ করার একটি উপায় প্রয়োজন। রিয়েলটাইম ডেটাবেস সিকিউরিটি রুলস আপনাকে প্রতিটি ব্যবহারকারীর জন্য অ্যাক্সেস নিয়ন্ত্রণ করতে দেয়। উদাহরণস্বরূপ, এখানে নিরাপত্তা নিয়ম একটি সেট যে কেউ পথে পড়ার অনুমতি দেয় এর /foo/ , কিন্তু এটা লিখতে কেউ:

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

.read এবং .write বিধি, নির্ঝর তাই এই ruleset অনুদান পথ যে কোনো ডেটাতে অ্যাক্সেস পড়া /foo/ সেইসাথে গভীর পাথ যেমন /foo/bar/baz । লক্ষ্য করুন .read এবং .write ডাটাবেসের ওভাররাইড নিয়ম অগভীর গভীর নিয়ম, তাই পড়ার এক্সেস /foo/bar/baz এখনও এই উদাহরণে প্রদান করা হবে পথ এ নিয়ম এমনকি যদি /foo/bar/baz মিথ্যাতে মূল্যায়ন করেন।

রিয়েলটাইম ডাটাবেস সিকিউরিটি রুলস অন্তর্ভুক্ত বিল্ট-ইন ভেরিয়েবল এবং ফাংশন যা আপনি অন্য পথ, সার্ভার সাইড টাইমস্ট্যাম্প, প্রমাণীকরণ তথ্য, এবং আরো অনেক কিছু উল্লেখ করতে অনুমতি দেয়। এখানে একটি নিয়ম একটি উদাহরণ যে অনুদান থেকে প্রামাণ ব্যবহারকারীদের জন্য অ্যাক্সেসের লিখুন /users/<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"]
    }
  }
}

পরবর্তী পদক্ষেপ