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

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

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

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

রিয়েলটাইম ডাটাবেস সুরক্ষা ওভারভিউ

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

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

প্রমাণীকরণ

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

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

অনুমোদন

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

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

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

রিয়েলটাইম ডাটাবেস সুরক্ষা বিধিতে অন্তর্নির্মিত ভেরিয়েবল এবং ফাংশন অন্তর্ভুক্ত যা আপনাকে অন্য পাথ, সার্ভার-সাইড টাইমস্ট্যাম্পস, প্রমাণীকরণের তথ্য এবং আরও অনেক কিছু উল্লেখ করতে দেয়। এখানে এমন একটি নিয়মের একটি উদাহরণ যা প্রমাণিত ব্যবহারকারীদের /users/<uid>/ তে প্রামাণিক ব্যবহারকারীদের লেখার অ্যাক্সেসকে মঞ্জুর করে, যেখানে <uid> ফায়ারবেস প্রমাণীকরণের মাধ্যমে প্রাপ্ত ব্যবহারকারীর আইডি।

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

তথ্য বৈধতা

ফায়ারবেস রিয়েলটাইম ডেটাবেস স্কিমহীন। এটি আপনার বিকাশের সাথে সাথে জিনিসগুলিকে পরিবর্তন করা সহজ করে তোলে, তবে একবার আপনার অ্যাপ বিতরণ করার জন্য প্রস্তুত হয়ে গেলে, তথ্যের জন্য ধারাবাহিক থাকা জরুরি। নিয়মের ভাষাতে একটি। .validate নিয়ম অন্তর্ভুক্ত যা আপনাকে .read এবং .write বিধিগুলির জন্য ব্যবহৃত একই অভিব্যক্তি ব্যবহার করে বৈধতা যুক্তি প্রয়োগ করতে দেয়। পার্থক্যটি হ'ল বৈধকরণের নিয়মগুলি ক্যাসকেড হয় না , সুতরাং লেখার অনুমতি দেওয়ার জন্য সমস্ত প্রাসঙ্গিক বৈধতা বিধিগুলি সত্য হিসাবে মূল্যায়ন করতে হবে।

এই নিয়মটি প্রয়োগ করে যে /foo/ লিখিত ডেটা অবশ্যই 100 টি অক্ষরের চেয়ে কম স্ট্রিং হওয়া উচিত:

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

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

ডাটাবেস সূচী সংজ্ঞায়িত করা হচ্ছে

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

.indexOn বিধি ব্যবহার করে নির্দিষ্ট করা হয়। এখানে একটি উদাহরণ সূচক ঘোষণা যা ডাইনোসরগুলির তালিকার জন্য দৈর্ঘ্য এবং দৈর্ঘ্যের ক্ষেত্রগুলিকে সূচনা করবে:

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

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