این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

قوانین پایگاه داده Realbase Firebase را درک کنید

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

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

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

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

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

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

احراز هویت

اولین قدم مشترک در امنیت برنامه شما شناسایی کاربران است. به این فرآیند احراز هویت گفته می شود . برای داشتن کاربران برای ورود به برنامه خود می توانید از تأیید اعتبار 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 مورد بررسی به نادرست است.

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

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

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

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

این قانون باعث می شود که داده های نوشته شده در /foo/ باید رشته ای کمتر از 100 نویسه باشند:

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

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

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

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

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

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

مراحل بعدی