API anahtarınızın güvenliğini sağlamak için Uygulama Kontrolü'nü kullanma

Firebase Uygulama Kontrolü, uygulamanızdan Google Haritalar Platformu'na yapılan çağrıları korumak için meşru uygulamalar dışındaki kaynaklardan gelen trafiği engeller. Bunu yapmak için reCAPTCHA Enterprise gibi bir onay sağlayıcıdan alınan jetonu kontrol eder. Uygulamalarınızı Uygulama Kontrolü ile entegre etmek, kötü amaçlı isteklere karşı korunmanıza yardımcı olur. Böylece yetkisiz API çağrıları için ücretlendirilmezsiniz.

Uygulama Kontrolü benim için uygun mu?

Uygulama Kontrolü çoğu durumda önerilir ancak aşağıdaki durumlarda Uygulama Kontrolü'ne gerek yoktur veya desteklenmez:

  • Orijinal Yerler SDK'sını kullanıyorsunuz. Uygulama Kontrolü yalnızca Yerler SDK'sı (Yeni) için desteklenir.
  • Özel veya deneysel uygulamalar Uygulamanız herkese açık değilse Uygulama Kontrolü'ne gerek yoktur.
  • Uygulamanız yalnızca sunucudan sunucuya kullanılıyorsa Uygulama Kontrolü'ne gerek yoktur. Ancak GMP ile iletişim kuran sunucu herkese açık istemciler (ör. mobil uygulamalar) tarafından kullanılıyorsa GMP yerine bu sunucuyu korumak için Uygulama Kontrolü'nü kullanmayı düşünün.

Uygulama adımlarına genel bakış

Uygulamanızı Uygulama Kontrolü ile entegre etmek için uygulamanız gereken adımlar şunlardır:

  1. Uygulamanıza Firebase'i ekleyin.
  2. App Check kitaplığını ekleyip başlatın.
  3. Jeton sağlayıcıyı uygulamanıza ekleyin.
  4. Places ve App Check API'lerini başlatın.
  5. Hata ayıklamayı etkinleştirin.
  6. Uygulama isteklerinizi izleyin ve yaptırım kararı alın.

Uygulama Kontrolü ile entegrasyonu tamamladıktan sonra Firebase konsolunda arka uç trafik metriklerini görebilirsiniz. Bu metrikler, isteklerin geçerli bir Uygulama Kontrolü jetonuyla birlikte gönderilip gönderilmediğine göre dökümünü sağlar. Daha fazla bilgi için Firebase Uygulama Kontrolü belgelerine bakın.

İsteklerin çoğunun meşru kaynaklardan geldiğinden ve kullanıcıların Uygulama Kontrolü uygulamanızı içeren en yeni sürüme güncellediğinden emin olduğunuzda yaptırımı etkinleştirebilirsiniz. Yaptırım etkinleştirildikten sonra Uygulama Kontrolü, geçerli bir Uygulama Kontrolü jetonu olmayan tüm trafiği reddeder.

Uygulama Kontrolü entegrasyonu planlarken dikkat edilmesi gerekenler

Entegrasyonunuzu planlarken dikkat etmeniz gereken bazı noktalar şunlardır:

  • Önerdiğimiz onay sağlayıcılardan biri olan reCAPTCHA Enterprise, ayda 10.000'den fazla değerlendirme için ücret alır.

    Önerdiğimiz diğer onay sağlayıcı olan reCAPTCHA s3'ün bir kotası vardır ve bu kota dolduktan sonra trafik değerlendirilmez.

    Özel bir onay sağlayıcı kullanmayı da tercih edebilirsiniz ancak bu, ileri düzey bir kullanım alanıdır. Daha fazla bilgi için Uygulama Kontrolü belgelerini inceleyin.

  • Uygulamanızın kullanıcıları, başlatma sırasında bir miktar gecikme yaşayabilir. Ancak daha sonra, periyodik yeniden onaylama işlemleri arka planda gerçekleşir ve kullanıcılar artık herhangi bir gecikme yaşamaz. Başlatma sırasındaki gecikme süresi, seçtiğiniz onaylama sağlayıcısına bağlıdır.

    Uygulama Kontrolü jetonunun geçerli olduğu süre (geçerlilik süresi veya TTL), yeniden onaylama sıklığını belirler. Bu süre Firebase konsolunda yapılandırılabilir. Yeniden onaylama, TTL'nin yaklaşık yarısı geçtiğinde gerçekleşir. Daha fazla bilgi için onaylama sağlayıcınızla ilgili Firebase belgelerine bakın.

Uygulamanızı Uygulama Kontrolü ile entegre etme

Ön koşullar ve şartlar

  • Maps JS API'nin en son haftalık veya üç aylık sürümü, Core ve Places kitaplıklarının yüklü olduğu bir uygulama.
  • Maps JS ve Places API (New) API'lerinin etkinleştirildiği bir Cloud projesi.
  • Cloud Console'da uygulamanın sahibi olmanız gerekir.
  • Cloud Console'dan uygulamanın proje kimliğini almanız gerekir.

1. adım: Firebase'i uygulamanıza ekleyin

Firebase'i uygulamanıza eklemek için Firebase geliştirici belgelerindeki talimatları uygulayın.

2. adım: App Check kitaplığını ekleyin ve App Check'i başlatın

Firebase, her varsayılan onay sağlayıcı için talimatlar sağlar. Bu talimatlarda, Firebase projesi oluşturma ve App Check kitaplığını uygulamanıza ekleme adımları açıklanmaktadır. App Check'i başlatmak için sağlanan kod örneklerini uygulayın.

3. adım: Haritalar JS API kitaplıklarını yükleyin

  1. Aşağıdaki snippet'te gösterildiği gibi çekirdek, Haritalar ve Yerler kitaplıklarını yükleyin. Daha fazla bilgi ve talimat için Maps JavaScript API Place sınıfı belgelerine bakın.

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

4. adım: Places ve App Check API'lerini başlatın

  1. Firebase konsolu tarafından sağlanan yapılandırmayı kullanarak Uygulama Kontrolü'nü başlatın.
  2. Maps JS API'ye gönderilen isteklerin Uygulama Kontrolü jetonlarıyla birlikte gönderildiğinden emin olun:
      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,
        });
      }  
      

5. adım: Hata ayıklamayı etkinleştirme (isteğe bağlı)

Uygulamanızı yerel olarak geliştirip test etmek veya sürekli entegrasyon (CI) ortamında çalıştırmak istiyorsanız geçerli Uygulama Kontrolü jetonları almak için hata ayıklama gizli anahtarı kullanan bir hata ayıklama derlemesi oluşturabilirsiniz. Bu sayede, hata ayıklama derlemenizde gerçek onay sağlayıcıları kullanmaktan kaçınabilirsiniz.

Uygulamanızı yerel olarak test etmek için:

  • Geliştirme amacıyla hata ayıklama sağlayıcısını etkinleştirin.
  • SDK'nın hata ayıklama günlüklerinden otomatik olarak oluşturulan rastgele bir UUID4 (App Check belgelerinde _hata ayıklama jetonu_ olarak adlandırılır) alırsınız. Bu jetonu Firebase konsoluna ekleyin.
  • Daha fazla bilgi ve talimat için Uygulama Kontrolü belgelerini inceleyin.

Uygulamanızı bir CI ortamında çalıştırmak için:

  • Firebase konsolundan rastgele bir UUID4 oluşturun.
  • UUID4'ü hata ayıklama jetonu olarak ekleyin ve ardından CI testlerinin her test çalıştırmasında erişeceği gizli bir depoya kopyalayın.
  • Daha fazla bilgi ve talimat için Uygulama Kontrolü belgelerini inceleyin.

6. adım: Uygulama isteklerinizi izleyin ve yaptırım kararı verin

Yaptırım uygulamaya başlamadan önce uygulamanızın meşru kullanıcılarını rahatsız etmeyeceğinizden emin olmanız gerekir. Bunun için Uygulama Kontrolü metrikleri ekranını ziyaret ederek uygulamanızın trafiğinin yüzde kaçının doğrulanmış, eski veya gayrimeşru olduğunu görebilirsiniz. Trafiğinizin çoğunun doğrulandığını gördüğünüzde yaptırımı etkinleştirebilirsiniz.

Daha fazla bilgi ve talimat için Firebase Uygulama Kontrolü belgelerine bakın.