ফায়ারবেস রিয়েলটাইম ডেটাবেস সুরক্ষা নিয়মগুলি বুঝুন

ফায়ারবেস রিয়েলটাইম ডাটাবেস সুরক্ষা বিধিগুলি নির্ধারণ করে যে আপনার ডাটাবেসে কে পড়েছে এবং লিখেছেন, আপনার ডেটা কীভাবে কাঠামোগত হয় এবং কোন সূচি বিদ্যমান রয়েছে তা নির্ধারণ করে। এই নিয়মগুলি ফায়ারবেস সার্ভারগুলিতে বাস করে এবং সর্বদা স্বয়ংক্রিয়ভাবে প্রয়োগ করা হয়। প্রতিটি পঠন এবং লেখার অনুরোধ কেবল তখনই শেষ হবে যদি আপনার নিয়মগুলি এটি অনুমতি দেয়। ডিফল্টরূপে, আপনার নিয়মগুলি কাউকে আপনার ডাটাবেসে অ্যাক্সেসের অনুমতি দেয় না। This is to protect your database from abuse until you have time to customize your rules or set up authentication.

Realtime Database Security Rules have a JavaScript-like syntax and come in four types:

নিয়মের ধরন
.পড়ুন ব্যবহারকারীদের দ্বারা ডেটা পড়ার অনুমতি দেওয়া হয় কিনা তা বর্ণনা করে।
.লিখুন যদি এবং কখন ডেটা লেখার অনুমতি দেওয়া হয় তা বর্ণনা করে।
.validate সঠিকভাবে ফরম্যাট করা মান কেমন হবে তা নির্ধারণ করে, এতে চাইল্ড অ্যাট্রিবিউট আছে কিনা এবং ডেটা টাইপ।
.indexOn Specifies a child to index to support ordering and querying.

Realtime Database নিরাপত্তা ওভারভিউ

The Firebase Realtime Database provides a full set of tools for managing the security of your app. এই সরঞ্জামগুলি আপনার ব্যবহারকারীদের প্রমাণীকরণ করা, ব্যবহারকারীর অনুমতিগুলি প্রয়োগ করা এবং ইনপুটগুলিকে বৈধতা দেওয়া সহজ করে তোলে।

Firebase-powered apps run more client-side code than those with many other technology stacks. Therefore, the way we approach security may be a bit different than you're used to.

প্রমাণীকরণ

আপনার অ্যাপকে সুরক্ষিত করার একটি সাধারণ প্রথম ধাপ হল আপনার ব্যবহারকারীদের শনাক্ত করা। This process is called authentication . You can use Firebase Authentication to have users to sign in to your app. ফায়ারবেস প্রমাণীকরণের মধ্যে গুগল এবং ফেসবুকের মতো সাধারণ প্রমাণীকরণ পদ্ধতির পাশাপাশি ইমেল এবং পাসওয়ার্ড লগইন, বেনামে লগইন এবং আরও অনেক কিছুর জন্য ড্রপ-ইন সমর্থন অন্তর্ভুক্ত রয়েছে।

User identity is an important security concept. বিভিন্ন ব্যবহারকারীর বিভিন্ন ডেটা থাকে এবং কখনও কখনও তাদের বিভিন্ন ক্ষমতা থাকে। উদাহরণস্বরূপ, একটি চ্যাট অ্যাপ্লিকেশনটিতে, প্রতিটি বার্তা এটি তৈরি করা ব্যবহারকারীর সাথে সম্পর্কিত। ব্যবহারকারীরা তাদের নিজস্ব বার্তাগুলি মুছতেও সক্ষম হতে পারে, তবে অন্য ব্যবহারকারীদের দ্বারা পোস্ট করা বার্তাগুলি নয়৷

অনুমোদন

Identifying your user is only part of security. একবার আপনি জানবেন যে তারা কারা, আপনার ডাটাবেসের ডেটাতে তাদের অ্যাক্সেস নিয়ন্ত্রণ করার একটি উপায় প্রয়োজন। রিয়েলটাইম ডেটাবেস নিরাপত্তা নিয়ম আপনাকে প্রতিটি ব্যবহারকারীর জন্য অ্যাক্সেস নিয়ন্ত্রণ করতে দেয়। For example, here's a set of security rules that allows anyone to read the path /foo/ , but no one to write to it:

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

.আল্ট ক্যাসকেড .read এবং .write , সুতরাং এই রুলসেটটি পাথ /foo/ পাশাপাশি কোনও গভীর পথ যেমন /foo/bar/baz মতো কোনও ডেটাতে অ্যাক্সেস পড়তে দেয়। Note that .read and .write rules shallower in the database override deeper rules, so read access to /foo/bar/baz would still be granted in this example even if a rule at the path /foo/bar/baz evaluated to false.

The Realtime Database Security Rules include built-in variables and functions that allow you to refer to other paths, server-side timestamps, authentication information, and more. এখানে এমন একটি নিয়মের একটি উদাহরণ যা অনুমোদিত ব্যবহারকারীদের /users/<uid>/ তে অ্যাক্সেস লেখার অনুমতি দেয়, যেখানে <ইউআইডি> Firebase Authentication মাধ্যমে প্রাপ্ত ব্যবহারকারীর আইডি।

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

ডেটা যাচাইকরণ

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

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

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

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

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

Firebase Realtime Database ডেটা অর্ডার এবং অনুসন্ধানের অনুমতি দেয়। For small data sizes, the database supports ad hoc querying, so indexes are generally not required during development. Before launching your app though, it is important to specify indexes for any queries you have to ensure they continue to work as your app grows.

Indexes are specified using the .indexOn rule. Here is an example index declaration that would index the height and length fields for a list of dinosaurs:

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

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