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ı korur. Bunu, reCAPTCHA Enterprise gibi bir onay sağlayıcıdan gelen jetonu kontrol ederek yapar. 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 sizden ücret alınmaz.

Uygulama Kontrolü benim için uygun mu?

Çoğu durumda App Check önerilir. Ancak aşağıdaki durumlarda App Check gerekli değildir veya desteklenmez:

  • Orijinal Places SDK'yı kullanıyorsunuz. App Check yalnızca Yerler SDK'sı (Yeni) için desteklenir.
  • Özel veya deneysel uygulamalar. Uygulamanıza herkesin erişimi yoksa App Check gerekli değildir.
  • Uygulamanız yalnızca sunucudan sunucuya kullanılıyorsa App Check'e 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 App Check'i kullanmayı düşünebilirsiniz.

Uygulama adımlarına genel bakış

Uygulamanızı App Check ile entegre etmek için genel olarak şu adımları uygulayacaksınız:

  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 Uygulama Kontrolü 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 entegrasyonu tamamladıktan sonra Firebase konsolunda arka uç trafiği 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ü dokümanlarını inceleyin.

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

Uygulama Kontrolü entegrasyonu planlarken dikkat edilmesi gerekenler

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

  • Ö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 doğrulama sağlayıcı reCAPTCHA v3'ün bir kotası vardır. Bu kotanın aşılması durumunda trafik değerlendirilmez.

    Gelişmiş bir kullanım alanı olsa da özel bir onay sağlayıcı kullanmayı tercih edebilirsiniz. Daha fazla bilgi için App Check belgelerini inceleyin.

  • Uygulamanızın kullanıcıları, başlatma sırasında bir miktar gecikme yaşar. Ancak daha sonra, düzenli olarak yeniden onaylama işlemleri arka planda gerçekleşir ve kullanıcılar artık herhangi bir gecikme yaşamaz. Başlangıçtaki tam gecikme miktarı, seçtiğiniz onay sağlayıcıya 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 onay sağlayıcınızın Firebase dokümanlarına bakın.

Uygulamanızı App Check ile entegre etme

Ön koşullar ve gereksinimler

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

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

2. adım: Uygulama Kontrolü kitaplığını ekleyin ve Uygulama Kontrolü'nü başlatın

Firebase, her varsayılan onay sağlayıcı için talimatlar sunar. Bu talimatlar, Firebase projesi oluşturmayı ve App Check kitaplığını uygulamanıza eklemeyi gösterir. App Check'i başlatmak için sağlanan kod örneklerini uygulayın.

3. adım: Maps 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 Yer Sınıfı dokümanlarına 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 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şturulmuş 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 App Check dokümanlarına bakın.

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 App Check dokümanlarına bakın.

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

Yaptırım uygulamaya başlamadan önce, uygulamanızın meşru kullanıcılarının hizmetten yararlanmasını engellemeyeceğinizden emin olmanız gerekir. Bunu yapmak için uygulama trafiğinizin hangi yüzdesinin doğrulandığını, güncel olmadığını veya yasa dışı olduğunu görmek üzere Uygulama Kontrolü metrikleri ekranını ziyaret edin. Trafiğinizin çoğunun doğrulandığını gördüğünüzde zorunlu kılmayı etkinleştirebilirsiniz.

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