قوانین پایگاه داده در زمان واقعی Firebase را درک کنید

قوانین امنیتی پایگاه داده Realtime Firebase تعیین می کند چه کسی دسترسی به پایگاه داده شما را خوانده و نوشته است ، ساختار داده های شما چگونه است و چه شاخص هایی وجود دارد. این قوانین در سرورهای Firebase زندگی می کنند و به طور خودکار در همه زمان ها اجرا می شوند. هر درخواست خواندن و نوشتن تنها درصورت تکمیل شدن قوانین شما تکمیل می شود. به طور پیش فرض ، قوانین شما به هیچ کس اجازه نمی دهد به پایگاه داده شما دسترسی پیدا کند. این کار برای محافظت از پایگاه داده شما در برابر سو abuse استفاده است تا زمانی که وقت خود را برای شخصی سازی قوانین خود یا تنظیم احراز هویت داشته باشید.

قوانین امنیتی پایگاه داده بیدرنگ یک نحو مانند JavaScript دارند و در چهار نوع وجود دارند:

انواع قانون
.خواندن توصیف می کند که آیا و چه زمانی داده ها توسط کاربران مجاز به خواندن هستند.
.نوشتن شرح می دهد که آیا داده ها مجاز به نوشتن هستند.
.تصدیق مشخص می کند که یک مقدار قالب بندی شده صحیح چگونه خواهد بود ، چه دارای ویژگی فرزند باشد و چه نوع داده.
.indexOn برای پشتیبانی از سفارش و پرس و جو ، کودک را برای فهرست بندی مشخص می کند.

بررسی اجمالی امنیت پایگاه داده بیدرنگ

Firebase Realtime Database مجموعه کاملی از ابزارها را برای مدیریت امنیت برنامه شما فراهم می کند. این ابزارها احراز هویت کاربران شما ، اعمال مجوزهای کاربر و اعتبار سنجی ورودی ها را آسان می کنند.

برنامه های مجهز به Firebase کد سمت مشتری را بیشتر از برنامه های دارای پشته فناوری دیگر اجرا می کنند. بنابراین ، نحوه برخورد ما با امنیت ممکن است کمی متفاوت از عادت شما باشد.

احراز هویت

اولین قدم مشترک در امنیت برنامه شما شناسایی کاربران است. این فرآیند به نام احراز هویت. شما می توانید با استفاده از فایربیس احراز هویت را به کاربران برای ورود به برنامه شما. تأیید اعتبار Firebase شامل پشتیبانی از روشهای رایج احراز هویت مانند Google و Facebook ، همچنین ورود به سیستم ایمیل و رمز عبور ، ورود ناشناس و غیره است.

هویت کاربر یک مفهوم مهم امنیتی است. کاربران مختلف داده های متفاوتی دارند و بعضی اوقات نیز قابلیت های متفاوتی دارند. به عنوان مثال ، در یک برنامه چت ، هر پیام با کاربری که آن را ایجاد کرده مرتبط است. همچنین ممکن است کاربران بتوانند پیام های خود را حذف کنند ، اما پیام های ارسال شده توسط کاربران دیگر را حذف نکنند.

مجوز

شناسایی کاربر شما تنها بخشی از امنیت است. هنگامی که آنها را شناختید ، به روشی برای کنترل دسترسی آنها به داده های پایگاه داده خود نیاز دارید. قوانین امنیتی پایگاه داده بیدرنگ به شما امکان کنترل دسترسی برای هر کاربر را می دهد. به عنوان مثال، در اینجا مجموعه ای از قوانین امنیتی است که اجازه می دهد تا هر کسی به خواندن مسیر است /foo/ ، اما هیچ کس به ارسال به آن:

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

.read و .write قوانین آبشار، بنابراین این کمک های مالی به عنوان خوانده شده مجموعه قوانین دسترسی به داده در مسیر /foo/ و همچنین هر گونه مسیرهای عمیق تر مانند /foo/bar/baz . توجه داشته باشید که .read و .write قوانین در نادیده گرفتن پایگاه داده کم عمق قوانین عمیق تر، بنابراین دسترسی به عنوان خوانده شده به /foo/bar/baz هنوز هم در این مثال اعطا می شود حتی اگر یک قاعده در مسیر /foo/bar/baz مورد بررسی به نادرست است.

پایگاه داده بیدرنگ قوانین امنیتی شامل ساخته شده است در متغیر ها و توابع که به شما اجازه برای اشاره به راههای دیگر، برچسب زمانی سمت سرور، اطلاعات احراز هویت، و بیشتر. اینجا یک مثال از یک قاعده است که کمک های مالی ارسال دسترسی برای کاربران تصدیق به /users/<uid>/ ، که در آن <UID> ID از کاربران دست آمده از طریق فایربیس احراز هویت است.

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

اعتبار سنجی داده ها

پایگاه داده Realtime Firebase بدون برنامه است. این کار باعث می شود در هنگام توسعه کارها آسان تغییر کنند ، اما وقتی برنامه شما آماده توزیع است ، پایداری داده ها مهم است. زبان قوانین شامل یک .validate حکومت که اجازه می دهد شما را به منطق اعتبار سنجی با استفاده از عبارت مشابه مورد استفاده برای .read و .write قوانین. تنها تفاوت این است که قوانین اعتبار سنجی cascade نمی، بنابراین همه قوانین اعتبار سنجی مربوطه باید به درست در ارزیابی برای نوشتن به او داده شود.

این قانون اجرا که داده ها نوشته شده /foo/ باید یک رشته کمتر از 100 حرف باشد:

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

اعتبار سنجی قوانین دسترسی به تمام آنها به همان ساخته شده در توابع و متغیرها به عنوان .read و .write قوانین. می توانید از این موارد برای ایجاد قوانین اعتبار سنجی استفاده کنید که از داده های مکان دیگری در پایگاه داده ، هویت کاربر ، زمان سرور و موارد دیگر آگاه باشند.

تعریف شاخص های پایگاه داده

پایگاه داده Realtime Firebase امکان سفارش و پرس و جو داده ها را فراهم می کند. برای اندازه های کوچک داده ، پایگاه داده از استعلام موقت پشتیبانی می کند ، بنابراین در هنگام توسعه به طور کلی به فهرست نیاز نیست. قبل از راه اندازی برنامه خود ، تعیین شاخص ها برای هرگونه سال لازم است تا اطمینان حاصل کنید که با رشد برنامه شما به کار خود ادامه می دهند.

شاخص ها مشخص با استفاده از .indexOn قانون است. در اینجا مثالی از اعلامیه فهرست وجود دارد که می تواند زمینه های ارتفاع و طول را برای لیستی از دایناسورها فهرست بندی کند:

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

مراحل بعدی