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

Firebase Uygulama Kontrolü, meşru uygulamalar dışındaki kaynaklardan gelen trafiği engelleyerek uygulamanızdan Google Haritalar Platformu'na yapılan çağrılar için koruma sağlar. Bunu, reCAPTCHA Enterprise gibi bir doğrulama sağlayıcıdan jeton olup olmadığını kontrol ederek yapar. Uygulamalarınızı Uygulama Kontrolü ile entegre etmek, kötü amaçlı isteklere karşı koruma sağlar. Böylece yetkisiz API çağrıları için sizden ücret alınmaz.

App Check benim için uygun mu?

Uygulama Denetleme çoğu durumda önerilir ancak aşağıdaki durumlarda Uygulama Denetleme gerekli değildir veya desteklenmez:

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

Uygulama adımlarına genel bakış

Uygulamanızı App Check ile entegre etmek için uygulamanız gereken adımlar özet olarak aşağıda verilmiştir:

  1. Firebase'i uygulamanıza ekleyin.
  2. App Check kitaplığını ekleyin ve 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 konusunda karar verin.

App Check ile entegrasyon yaptıktan sonra Firebase konsolunda arka uç trafik metriklerini görebilirsiniz. Bu metrikler, isteklerin geçerli bir Uygulama Kontrolü jetonu içerip içermediklerine göre dökümünü sağlar. Daha fazla bilgi için Firebase Uygulama Kontrolü dokümanlarını inceleyin.

Çoğu isteğin meşru kaynaklardan geldiğinden ve kullanıcıların uygulamanızın, Uygulama Denetleme'yi uygulamanızı içeren en son sürümüne güncellendiğinden emin olduğunuzda yaptırımı etkinleştirebilirsiniz. Zorunlu kılma etkinleştirildikten sonra Uygulama Kontrolü, geçerli bir Uygulama Kontrolü jetonu olmayan tüm trafiği reddeder.

App Check entegrasyonunu planlarken dikkat edilmesi gerekenler

Entegrasyonunuzu planlarken göz önünde bulundurmanız gereken bazı noktalar:

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

    Önerdiğimiz diğer doğrulama sağlayıcı olan reCAPTCHA v3'ün kotası vardır. Bu kotanın aşılması durumunda trafik değerlendirilmez.

    Özel bir doğrulama sağlayıcı kullanmayı seçebilirsiniz ancak bu gelişmiş bir kullanım alanıdır. Daha fazla bilgi için Uygulama Denetleme belgelerini inceleyin.

  • Uygulamanızın kullanıcıları, uygulamayı başlatırken biraz gecikme yaşayabilir. Ancak daha sonra, arka planda düzenli olarak yeniden doğrulama yapılır ve kullanıcılar artık gecikme yaşamaz. Başlangıçtaki gecikmenin tam miktarı, seçtiğiniz doğrulama sağlayıcıya bağlıdır.

    Uygulama Kontrolü jetonunun geçerlilik süresi (geçerlilik süresi veya TTL), yeniden doğrulamaların sıklığını belirler. Bu süre Firebase konsolunda yapılandırılabilir. Yeniden doğrulama, TTL'nin yaklaşık yarısı geçtiğinde gerçekleşir. Daha fazla bilgi için doğrulama sağlayıcınızın Firebase dokümanlarına bakın.

Uygulamanızı App Check ile entegre etme

Ön koşullar ve şartlar

  • Maps JS API'nin en son haftalık veya üç aylık sürümünün, Core ve Places kitaplıklarının yüklü olduğu bir uygulama.
  • Maps JS ve Rehber API (Yeni) API'lerinin etkin olduğu bir Cloud projesi.
  • Cloud Console'da uygulamanın sahibi olmanız gerekir.
  • Cloud Console'daki uygulamanın proje kimliğine ihtiyacınız vardır.

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

Firebase'i uygulamanıza eklemek için Firebase geliştirici dokümanlarında yer alan talimatları uygulayın.

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

Firebase, her varsayılan doğrulama sağlayıcısı için talimatlar sağlar. Bu talimatlarda, Firebase projesi oluşturma ve App Check kitaplığını uygulamanıza ekleme işlemleri gösterilmektedir. App Check'i başlatmak için verilen kod örneklerini uygulayın.

3. Adım: Maps JS API kitaplıklarını yükleyin

  1. Temel, Haritalar ve Yerler kitaplıklarını aşağıdaki snippet'te gösterildiği gibi yükleyin. Daha fazla bilgi ve talimat için Maps JavaScript API Yer 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 App Check'i başlatın.
  2. Maps JS API'ye yapılan 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ştirin (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 App Check jetonları almak için hata ayıklama gizlisi kullanan uygulamanızın hata ayıklama derlemesini oluşturabilirsiniz. Bu sayede hata ayıklama derlemenizde gerçek doğrulama 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 (Uygulama Denetleme dokümanlarında _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 Denetleme dokümanlarına bakın.

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

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

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

Yaptırıma başlamadan önce, uygulamanızın meşru kullanıcılarını rahatsız etmeyeceğinden emin olmak istersiniz. Bunu yapmak için uygulamanızın trafiğinin ne kadarının doğrulanmış, güncel olmayan veya meşru olmadığını görmek üzere Uygulama Kontrolü metrik ekranını ziyaret edin. Trafiğinizin büyük kısmının doğrulandığını gördükten sonra yaptırımı etkinleştirebilirsiniz.

Daha fazla bilgi ve talimat için Firebase Uygulama Kontrolü dokümanlarını inceleyin.