استفاده از App Check برای ایمن کردن کلید میانای API

بررسی برنامه Firebase با مسدود کردن ترافیکی که از منابعی غیراز برنامه‌های قانونی می‌آید، از تماس‌های برنامه‌تان با «پلاتفرم Google Maps» محافظت می‌کند. این کار را با بررسی وجود کد از ارائه‌دهنده گواهی مانند reCAPTCHA Enterprise انجام می‌دهد. ادغام کردن برنامه‌هایتان با App Check به محافظت دربرابر درخواست‌های مخرب کمک می‌کند، بنابراین برای فراخوانی‌های غیرمجاز API هزینه‌ای از شما کسر نمی‌شود.

آیا App Check برای من مناسب است؟

در اکثر موارد، «بررسی برنامه» توصیه می‌شود، اما در موارد زیر «بررسی برنامه» لازم نیست یا پشتیبانی نمی‌شود:

  • درحال استفاده از کیت توسعه نرم‌افزار Places اصلی هستید. «بررسی برنامه» فقط برای «کیت توسعه نرم‌افزار مکان‌ها» (جدید) پشتیبانی می‌شود.
  • برنامه‌های خصوصی یا آزمایشی. اگر برنامه‌تان به‌طور عمومی دردسترس نیست، به App Check نیازی نیست.
  • اگر برنامه‌تان فقط به‌صورت سروربه‌سرور استفاده می‌شود، به «بررسی برنامه» نیازی نیست. بااین‌حال، اگر سروری که با GMP ارتباط برقرار می‌کند توسط کارخواهان عمومی (مانند برنامه‌های تلفن همراه) استفاده می‌شود، به‌جای GMP، استفاده از App Check را برای محافظت از آن سرور درنظر بگیرید.

نمای کلی مراحل پیاده‌سازی

در سطح بالا، این‌ها مراحلی هستند که برای ادغام برنامه‌تان با «بررسی برنامه» دنبال خواهید کرد:

  1. Firebase را به برنامه‌تان اضافه کنید.
  2. کتابخانه App Check را اضافه و مقداردهی اولیه کنید.
  3. ارائه‌دهنده رمزه را به برنامه‌تان اضافه کنید.
  4. میاناهای برنامه‌سازی کاربردی Places و App Check را مقداردهی اولیه کنید.
  5. اشکال‌زدایی را فعال کنید.
  6. درخواست‌های برنامه‌تان را پایش کنید و درباره اجرای آن تصمیم بگیرید.

پس‌از ادغام با App Check، می‌توانید سنجه‌های ترافیک پس‌بخش را در کنسول Firebase ببینید. این سنجه‌ها تفکیک درخواست‌ها را براساس اینکه آیا با یک کد App Check معتبر همراه هستند یا نه ارائه می‌دهند. برای کسب اطلاعات بیشتر، به اسناد «بررسی برنامه Firebase» مراجعه کنید.

وقتی مطمئن شدید که اکثر درخواست‌ها از منابع قانونی هستند و کاربران به جدیدترین نسخه برنامه‌تان که شامل پیاده‌سازی App Check است به‌روزرسانی کرده‌اند، می‌توانید اجرای اجباری را روشن کنید. وقتی اجرا فعال باشد، «بررسی برنامه» همه ترافیک‌های بدون کد App Check معتبر را رد خواهد کرد.

ملاحظات هنگام برنامه‌ریزی برای ادغام App Check

در اینجا چند نکته وجود دارد که باید هنگام برنامه‌ریزی برای ادغام خود در نظر بگیرید:

  • یکی از ارائه‌دهندگان گواهی که توصیه می‌کنیم، reCAPTCHA Enterprise، برای بیش‌از ۱۰٬۰۰۰ ارزیابی در ماه هزینه دریافت می‌کند.

    ارائه‌دهنده گواهی دیگری که توصیه می‌کنیم، reCAPTCHA نسخه ۳، سهمیه‌ای دارد که پس‌از آن ترافیک ارزیابی نخواهد شد.

    می‌توانید از ارائه‌دهنده گواهی سفارشی استفاده کنید، هرچند این مورد استفاده پیشرفته است. برای اطلاعات بیشتر، به اسناد App Check مراجعه کنید.

  • کاربران برنامه شما هنگام راه‌اندازی با کمی تأخیر مواجه خواهند شد. بااین‌حال، پس‌از آن، هرگونه تأیید مجدد دوره‌ای در پس‌زمینه انجام خواهد شد و کاربران دیگر نباید هیچ‌گونه تأخیری را تجربه کنند. مقدار دقیق تأخیر در راه‌اندازی به ارائه‌دهنده گواهی‌ای که انتخاب می‌کنید بستگی دارد.

    مدت زمانی که کد App Check معتبر است (زمان بقا یا TTL) بسامد گواهی مجدد را تعیین می‌کند. این مدت را می‌توان در کنسول Firebase پیکربندی کرد. تصدیق مجدد زمانی رخ می‌دهد که تقریباً نیمی از TTL سپری شده باشد. برای اطلاعات بیشتر، به اسناد Firebase برای ارائه‌دهنده گواهی‌تان مراجعه کنید.

ادغام کردن برنامه با App Check

پیش‌نیازها و الزامات

  • برنامه‌ای که جدیدترین نسخه هفتگی یا فصلی Maps JS API، کتابخانه‌های Core و Places در آن بار شده باشد.
  • پروژه Cloud با Maps JS و Places API (جدید) فعال‌شده.
  • باید مالک برنامه در Cloud Console باشید.
  • به شناسه پروژه برنامه از «کنسول Cloud» نیاز خواهید داشت

مرحله ۱: Firebase را به برنامه‌تان اضافه کنید

دستورالعمل‌های موجود در اسناد توسعه‌دهنده Firebase را برای افزودن Firebase به برنامه‌تان دنبال کنید.

مرحله ۲: افزودن کتابخانه App Check و مقداردهی اولیه App Check

Firebase برای هر ارائه‌دهنده گواهی پیش‌فرض دستورالعمل‌هایی ارائه می‌دهد. این دستورالعمل‌ها به شما نشان می‌دهند که چگونه یک پروژه Firebase راه‌اندازی کنید و کتابخانه App Check را به برنامه خود اضافه کنید. نمونه کدهای ارائه‌شده را برای مقداردهی اولیه App Check دنبال کنید.

مرحله ۳: بار کردن کتابخانه‌های Maps JS API

  1. کتابخانه‌های core،‏ Maps، و Places را همان‌طور که در قطعه کد زیر نشان داده شده است بار کنید. برای اطلاعات و دستورالعمل‌های بیشتر، به اسناد کلاس مکان Maps JavaScript API مراجعه کنید.

    async function init() {
      const {Settings} = await google.maps.importLibrary('core');
      const {Map} = await google.maps.importLibrary('maps');
      const {Place} = await google.maps.importLibrary('places');
    }  

مرحله ۴: مقداردهی اولیه Places API و App Check API

  1. بااستفاده از پیکربندی ارائه‌شده توسط کنسول Firebase،‏ App Check را مقداردهی اولیه کنید.
  2. مطمئن شوید که درخواست‌های ارسال‌شده به Maps JS API با کدهای App Check همراه باشند:
      async function init() {
        const {Settings} = await google.maps.importLibrary('core');
        const {Map} = await google.maps.importLibrary('maps');
        const {Place} = await google.maps.importLibrary('places');
      
        const app = initializeApp({
          // Your firebase configuration object
        });
      
        // Pass your reCAPTCHA Enterprise site key to initializeAppCheck().
        const appCheck = initializeAppCheck(app, {
          provider: new ReCaptchaEnterpriseProvider(
            'abcdefghijklmnopqrstuvwxy-1234567890abcd',
          ),
      
          // Optional argument. If true, the SDK automatically refreshes App Check
          // tokens as needed.
          isTokenAutoRefreshEnabled: true,
        });
      
        Settings.getInstance().fetchAppCheckToken = () =>
            getToken(appCheck, /* forceRefresh = */ false);
      
        // Make a Places JS request
        const place = new Place({id: 'ChIJN5Nz71W3j4ARhx5bwpTQEGg'});
        await place.fetchFields({fields: ['*']});
      
        // Load a map
        map = new Map(document.getElementById("map"), {
          center: { lat: 37.4161493, lng: -122.0812166 },
          zoom: 8,
        });
      }  
      

مرحله ۵: فعال کردن اشکال‌زدایی (اختیاری)

اگر می‌خواهید برنامه‌تان را به‌صورت محلی توسعه دهید و آزمایش کنید، یا آن را در محیط ادغام مداوم (CI) اجرا کنید، می‌توانید ساخت اشکال‌زدایی از برنامه‌تان ایجاد کنید که از رمز اشکال‌زدایی برای دریافت کردن کدهای App Check معتبر استفاده می‌کند. این کار به شما امکان می‌دهد از استفاده از ارائه‌دهندگان تصدیق واقعی در ساخت اشکال‌زدایی خود اجتناب کنید.

برای آزمایش کردن برنامه به‌صورت محلی:

  • ارائه‌کننده اشکال‌زدایی را برای اهداف توسعه فعال کنید.
  • یک UUID4 تصادفی که به‌طور خودکار تولید شده است (در سندنگاری «بررسی برنامه» به آن _کلید اشکال‌زدایی_ گفته می‌شود) از گزارش‌های اشکال‌زدایی کیت توسعه نرم‌افزار دریافت خواهید کرد. این کد را به کنسول Firebase اضافه کنید.
  • برای اطلاعات و دستورالعمل‌های بیشتر، به اسناد App Check مراجعه کنید.

برای اجرای برنامه در محیط CI:

  • یک UUID4 تصادفی از کنسول Firebase تولید کنید.
  • UUID4 را به‌عنوان یک کد اشکال‌زدایی اضافه کنید و سپس آن را در یک مخزن مخفی کپی کنید که تست‌های CI در هر اجرای تست به آن دسترسی خواهند داشت.
  • برای اطلاعات و دستورالعمل‌های بیشتر، به اسناد App Check مراجعه کنید.

مرحله ۶: نظارت بر درخواست‌های برنامه و تصمیم‌گیری درباره اجرا

قبل‌از شروع اجرای اجباری، باید مطمئن شوید که برای کاربران قانونی برنامه‌تان اختلال ایجاد نمی‌کنید. برای انجام این کار، به صفحه سنجه‌های «بررسی برنامه» بروید تا ببینید چند درصد از ترافیک برنامه‌تان تأییدشده، قدیمی، یا غیرقانونی است. وقتی دیدید که اکثر ترافیک شما درستی‌سنجی شده است، می‌توانید اعمال را فعال کنید.

برای اطلاعات و دستورالعمل‌های بیشتر، به اسناد Firebase App Check مراجعه کنید.