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. Bu işlem, App Attest gibi bir onay sağlayıcıdan alınan jetonun varlığını kontrol ederek yapılır. 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 Uygulama Kontrolü önerilir. Ancak aşağıdaki durumlarda Uygulama Kontrolü 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 Uygulama Denetimi 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.
- App Check'in önerdiği onay sağlayıcılar, onay sağlayıcınız tarafından güvenliği ihlal edilmiş veya güvenilmez olarak kabul edilen cihazlarda çalışmaz. Bu tür cihazları desteklemeniz gerekiyorsa özel bir onay hizmeti dağıtabilirsiniz. Daha fazla bilgi için talimatları inceleyin.
Uygulama adımlarına genel bakış
Uygulamanızı App Check ile entegre etmek için genel olarak şu adımları uygulayacaksınız:
- Firebase'i uygulamanıza ekleyin.
- App Check kitaplığını ekleyin ve başlatın.
- Jeton sağlayıcıyı uygulamanıza ekleyin.
- Places ve Uygulama Kontrolü API'lerini başlatın.
- Hata ayıklamayı etkinleştirin.
- 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 Denetimi entegrasyonu planlarken dikkat edilmesi gerekenler
Entegrasyonunuzu planlarken göz önünde bulundurmanız gereken bazı noktalar:
Önerdiğimiz onay sağlayıcılar (Device Check veya App Attest), Apple tarafından belirlenen kotalara ve sınırlamalara tabidir.
Gelişmiş bir kullanım alanı olsa da özel bir onay sağlayıcı kullanmayı tercih edebilirsiniz. Daha fazla bilgi için Firebase Uygulama Kontrolü dokümanlarını inceleyin.
-
Uygulamanızın kullanıcıları, başlatma sırasında bir miktar gecikme yaşayacaktır. 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
- Places SDK'nın 9.2 veya sonraki sürümlerinin yüklü olduğu bir uygulama
- Uygulamanın paket kimliği.
- Apple Member Center'daki Üyelik bölümünde yer alan Ekip Kimliğiniz.
- Cihaz Kontrolü'nü kullanmayı planlıyorsanız özel anahtar dosyanız ve anahtar kimliğiniz.
- 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 dokümanlarındaki talimatları uygulayın.
Uygulamanızı kaydettiğinizde bir yapılandırma dosyası (GoogleService-Info.plist
) alırsınız. Bu dosyayı değiştirmeden uygulamanızın kök düzeyine ekleyin.
iOS için Places Swift SDK'sı
import FirebaseCore import FirebaseAppCheck import GooglePlacesSwift
Swift
import FirebaseCore import FirebaseAppCheck import GooglePlaces
Objective-C
@import FirebaseCore; @import FirebaseAppCheck; @import GooglePlaces;
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 talimatlarda, Firebase projesinin nasıl ayarlanacağı ve App Check kitaplığının uygulamanıza nasıl ekleneceği açıklanmaktadır. App Check'i başlatmak için sağlanan kod örneklerini kullanın.
- Uygulama Kontrolü kitaplığını eklemek için Firebase talimatlarını uygulayın:
- Uygulama Kontrolü'nü başlatın.
- App Attest kullanıyorsanız App Attest ile ilgili Firebase geliştirici belgelerindeki talimatları uygulayın.
AppCheckProviderFactory
uygulaması oluşturmak ve bunuAppDelegate
dosyanıza eklemek için Firebase App Check talimatlarını uygulayın.iOS için Places Swift SDK'sı
let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory)
Swift
let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory)
Objective-C
YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory];
- Cihaz Kontrolü'nü kullanıyorsanız
AppDelegate
dosyasına aşağıdakileri ekleyin:iOS için Places Swift SDK'sı
AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())
Swift
AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())
Objective-C
[FIRAppCheck setAppCheckProviderFactory:providerFactory];
- App Attest kullanıyorsanız App Attest ile ilgili Firebase geliştirici belgelerindeki talimatları uygulayın.
3. adım: Jeton sağlayıcıyı ekleyin
Uygulamanızın kök düzeyinde AppCheckTokenProvider
adlı bir dosya (veya Objective-C kullanıyorsanız AppCheckTokenProvider.h
ve AppCheckTokenProvider.m
adlı iki dosya) oluşturun.
Aşağıdaki içe aktarma ifadelerini ve sınıf tanımını ekleyin:
iOS için Places Swift SDK'sı
// AppCheckTokenProvider.swift import FirebaseAppCheck import Foundation import GooglePlacesSwift struct TokenProvider: AppCheckTokenProvider { func fetchAppCheckToken() async throws -> String { return try await AppCheck.appCheck().token(forcingRefresh: false).token } }
Swift
// AppCheckTokenProvider.swift import FirebaseAppCheck import Foundation import GooglePlaces class AppCheckTokenProvider: NSObject, GMSPlacesAppCheckTokenProvider { func fetchAppCheckToken() async throws -> String { return try await AppCheck.appCheck().token(forcingRefresh: false).token } }
Objective-C
// AppCheckTokenProvider.h @import Foundation; @import GooglePlaces; @interface AppCheckTokenProvider : NSObject <GMSPlacesAppCheckTokenProvider> @end // AppCheckTokenProvider.m #import "AppCheckTokenProvider.h" @import FirebaseAppCheck; @implementation AppCheckTokenProvider - (void)fetchAppCheckTokenWithCompletion:(nonnull GMSAppCheckTokenCompletion)completion { [[FIRAppCheck appCheck] tokenForcingRefresh:NO completion:^(FIRAppCheckToken *_Nullable token, NSError *_Nullable error) { if (token) { completion(token.token, nil); } else { completion(nil, error); } }]; } @end
4. adım: Places ve App Check API'lerini başlatın
AppDelegate
dosyanızda Places API'yi başlatın:iOS için Places Swift SDK'sı
PlacesClient.provideAPIKey("YOUR_API_KEY")
Swift
GMSPlacesClient.provideAPIKey("YOUR_API_KEY")
Objective-C
[GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
- Ardından, App Check API'yi başlatın:
iOS için Places Swift SDK'sı
PlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())
Swift
GMSPlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())
Objective-C
[GMSPlacesClient setAppCheckTokenProvider:[[AppCheckTokenProvider alloc] init]];
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ı simülatörde veya test cihazında test etmek için:
App Check hata ayıklama sağlayıcı fabrikasını oluşturun ve ayarlayın.
Bu kod örneği hem hata ayıklama hem de üretim senaryolarını ele alır:iOS için Places Swift SDK'sı
#if targetEnvironment(simulator) let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif
Swift
#if targetEnvironment(simulator) let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif
Objective-C
if (targetEnvironment == simulator){ FIRAppCheckDebugProviderFactory *providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; } else { YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; }
- Xcode projenizde günlüğe kaydetmeyi etkinleştirin, uygulamayı başlatın ve yerel hata ayıklama jetonunu günlükte bulun.
- 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 konsolunda bir hata ayıklama jetonu oluşturun ve bunu CI sisteminizin güvenli anahtar deposuna ekleyin.
- Xcode'da, test şemanıza
FIRAAppCheckDebugToken
adlı ve$(APP_CHECK_DEBUG_TOKEN)
(veya benzer bir ifade) değerine sahip bir ortam değişkeni ekleyin. - CI test komut dosyanızda hata ayıklama jetonunu ortam olarak iletin.
App Check hata ayıklama sağlayıcı fabrikasını oluşturun ve ayarlayın.
Bu kod örneği hem hata ayıklama hem de üretim senaryolarını ele alır:iOS için Places Swift SDK'sı
#if DEBUG let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif AppCheck.setAppCheckProviderFactory(providerFactory)
Swift
#if DEBUG let providerFactory = AppCheckDebugProviderFactory() #else let providerFactory = YourAppCheckProviderFactory() #endif AppCheck.setAppCheckProviderFactory(providerFactory)
Objective-C
#if DEBUG id<FIRAppCheckProviderFactory> providerFactory = [[FIRAppCheckDebugProviderFactory alloc] init]; #else // DEBUG id<FIRAppCheckProviderFactory> providerFactory = [[YourAppCheckProviderFactory alloc] init]; #endif // DEBUG AppCheck.setAppCheckProviderFactory(providerFactory)
- 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.