Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

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

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

انواع قوانین
.خواندن توضیح می دهد که آیا و چه زمانی داده ها توسط کاربران مجاز به خواندن می شوند.
.نوشتن توضیح می دهد که آیا و چه زمانی داده ها مجاز به نوشتن هستند.
.تصدیق مقدار درست قالب بندی شده را مشخص می کند ، آیا دارای ویژگی های فرزند است و نوع داده.
.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"
      }
    }
  }
}

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

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

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

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

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

تعریف فهرست های پایگاه داده

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

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

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

مراحل بعدی