Google, uygulamanızın güvenli ve güvenilir bir ortamda çalışıp çalışmadığını belirlemenize yardımcı olacak bir dizi API ve hizmet sunar. Bu sistemin merkezinde, riskli ve sahtekarlık içeren etkileşimleri tespit ederek etkileşimlerin orijinal olup olmadığını kontrol etmenize yardımcı olan Play Integrity API yer alır. Play Integrity API artık uygulama ve cihaz bütünlüğüne ek olarak erişim ve erişilebilirlik riskleri, Google Play Protect ve son cihaz etkinliği hakkında bilgi sunmaktadır. Android platformu, sahtekarlık önleme stratejinizi daha da güçlendirmek için uygulamanızla alakalı olabilecek belirli senaryolar için API'ler sunar.
Play Integrity API
Play Integrity API, uygulamalarının çalıştığı cihazın güvenlik durumu hakkında bilgi edinmenizi sağlar. Bu sayede, hassas bilgilere doğru kullanıcının eriştiğinden emin olabilirsiniz.
Etkileşimlerin ve sunucu isteklerinin güvenilir bir ortamda orijinal uygulama ikili programınızdan gelip gelmediğini kontrol etmenize yardımcı olur:
- Orijinal uygulama ikili programı: Google Play tarafından tanınan değiştirilmemiş ikili programınızla etkileşim kurup kurmadığınızı belirleyin.
- Orijinal Play yüklemesi: Mevcut kullanıcı hesabının lisanslı olup olmadığı, yani kullanıcının uygulamayı veya oyunu Google Play'den yükleyerek ya da ödeme yaparak edinip edinmediğini belirleyin.
- Orijinal Android cihaz: Uygulamanızın çalıştığı cihazın, Google Play Hizmetleri tarafından desteklenen orijinal bir Android cihaz olup olmadığını belirleyin.
- Bilinen kötü amaçlı yazılımlardan arındırılmış: Google Play Protect'in açık olup olmadığını ve cihazda riskli ya da tehlikeli uygulamalar bulup bulmadığını belirleyin.
- Diğer uygulamalar tarafından erişme riski düşük: Ekranı kaydedebilecek veya cihazı ve uygulamanıza yapılan girişleri kontrol edebilecek başka uygulamaların çalışıp çalışmadığını belirleyin.
Bu, sahtekarlığı azaltmaya nasıl yardımcı olur?
Kullanıcılar uygulamanızda önemli bir işlem gerçekleştirdiğinde Play Integrity API'yi çağırabilirsiniz. Aksi takdirde, uygulamanızın arka uç sunucusu saldırılara ve sahtekarlığa karşı korunmak için ne yapılması gerektiğine karar verebilir. Örneğin, ek kullanıcı doğrulaması isteyebilir veya hassas işlevlere erişimi reddedebilirsiniz.
Uygulamaya Erişim Riski
Uygulama Erişim Riski sinyali, uygulamanız çalışırken cihazdaki diğer uygulamaların ekranı görüntüleyip görüntüleyemeyeceğini veya erişilebilirlik izinlerini kullanarak uygulamanıza erişip erişemeyeceğini değerlendirmenize yardımcı olmak için kullanıma sunulmuştur. Doğrulanmış erişilebilirlik uygulamaları bu sonuçlardan otomatik olarak hariç tutulur. Uygulama erişim riski, istek gönderen uygulama yüklü uygulamaların kimliğini elde etmediği ve karar kullanıcı veya cihaz tanımlayıcılarına bağlanmadığı için geliştiricilerin kullanıcı gizliliğini korurken uygulamalarını korumalarına yardımcı olur.
Bu ortak çalışma sayesinde, müşterilerimizi daha etkili bir şekilde korumak için daha ayrıntılı analizler sunmamıza yardımcı olacak sinyalleri alabiliriz.
—Nubank, erken erişim iş ortağı
Uygulamaya erişim riskinin farklı risk seviyeleri vardır:
- Kayıt yanıtı, ekranı kaydedebilecek başka uygulamaların çalıştığı anlamına gelir.
- Kontrol yanıtı, cihazı kontrol edebilecek başka uygulamaların çalıştığı anlamına gelir. Bu uygulamalar hem ekranı kaydedebilir hem de uygulamanıza yapılan girişleri kontrol edebilir.
Uygulamaya erişim riski yaptırımı
Erişimi tamamen reddetmek yerine, uygulamanızda veya oyununuzda Play Integrity API ile korumak için yüksek değerli veya hassas işlemleri tanımlayın. Mümkün olduğunda, yüksek değerli işlemlerin devam etmesine izin vermeden önce riskli trafiğe itiraz edin. Örneğin, uygulama erişim riski ekranı kaydedebilecek bir uygulamanın çalıştığını gösterdiğinde, kullanıcıdan korumak istediğiniz işleve geçmeden önce ekranı kaydedebilecek uygulamaları devre dışı bırakmasını veya kaldırmasını isteyin.
Aşağıdaki tabloda bazı örnek kararlar verilmiştir:
Uygulamaya erişim riski kararı örneği | Yorumlama |
---|---|
appsDetected: ["KNOWN_INSTALLED"]
|
Yalnızca Google Play tarafından tanınan veya cihaz üreticisi tarafından sistem bölümüne önceden yüklenen uygulamalar yüklüdür. Kayıt, kontrol veya yer paylaşımı kararlarıyla sonuçlanacak çalışan uygulama yok. |
appsDetected: ["KNOWN_INSTALLED", "UNKNOWN_INSTALLED", "UNKNOWN_CAPTURING"]
|
Google Play tarafından yüklenen veya cihaz üreticisi tarafından sistem bölümüne önceden yüklenen uygulamalar vardır. Çalışan ve ekranı görüntülemek veya diğer giriş ve çıkışları yakalamak için kullanılabilecek izinleri etkinleştirilmiş başka uygulamalar var. |
appsDetected: ["KNOWN_INSTALLED", "KNOWN_CAPTURING", "UNKNOWN_INSTALLED", "UNKNOWN_CONTROLLING"]
|
Ekranı görüntülemek veya diğer giriş ve çıkışları yakalamak için kullanılabilecek izinlerin etkinleştirildiği bir Play veya sistem çalışıyor. Ayrıca, cihazı kontrol etmek ve uygulamanıza gelen girişleri doğrudan kontrol etmek için kullanılabilecek izinleri etkinleştirilmiş başka uygulamalar da çalışıyor olabilir. |
appAccessRiskVerdict: {}
|
Koşullardan biri karşılanmadığı için uygulama erişimi riski değerlendirilmemiştir. Örneğin, cihaz yeterince güvenilir olmayabilir. |
Play Protect sinyali
Play Protect sinyali, uygulamanıza Play Protect'in açık olup olmadığını ve cihazda bilinen zararlı uygulamalar bulup bulmadığını bildirir.
environmentDetails:{
playProtectVerdict: "NO_ISSUES"
}
Kötü amaçlı yazılımlar, uygulamanız veya kullanıcılarınızın verileri için özellikle endişe verici bir konuysa bu kararı kontrol edebilir ve devam etmeden önce kullanıcılarınızdan Play Protect'i etkinleştirmelerini veya zararlı uygulamaları kaldırmalarını isteyebilirsiniz.
playProtectVerdict
aşağıdaki değerlerden biri olabilir:
Sonuç | Açıklama | Önerilen işlem |
---|---|---|
|
Play Protect etkindir ve cihazda uygulama ile ilgili herhangi bir sorun tespit edilmemiştir. |
Play Protect etkindir ve herhangi bir sorun tespit edilmemiştir. Bu nedenle kullanıcının herhangi bir işlem yapmasına gerek yoktur. |
|
Play Protect etkindir ancak henüz tarama yapılmamıştır. Cihaz ya da Play Store uygulaması kısa süre önce sıfırlanmış olabilir. |
Play Protect etkindir ve herhangi bir sorun tespit edilmemiştir. Bu nedenle kullanıcının herhangi bir işlem yapmasına gerek yoktur. |
|
Play Protect kapalı. |
Play Protect etkindir ve herhangi bir sorun tespit edilmemiştir. Bu nedenle kullanıcının herhangi bir işlem yapmasına gerek yoktur. |
|
Play Protect etkindir ve cihazda potansiyel zararlı uygulamaların yüklü olduğunu tespit etmiştir. |
Risk toleransınıza bağlı olarak kullanıcıdan Play Protect'i başlatmasını ve Play Protect uyarılarıyla ilgili işlem yapmasını isteyebilirsiniz. Kullanıcı bu koşulları karşılayamıyorsa sunucu işlemini engelleyebilirsiniz. |
|
Play Protect etkindir ve cihazda tehlikeli uygulamaların yüklü olduğunu tespit etmiştir. |
Risk toleransınıza bağlı olarak kullanıcıdan Play Protect'i başlatmasını ve Play Protect uyarılarıyla ilgili işlem yapmasını isteyebilirsiniz. Kullanıcı bu koşulları karşılayamıyorsa sunucu işlemini engelleyebilirsiniz. |
|
Play Protect kararı değerlendirilmemiştir. Bu durum aşağıdakiler dahil olmak üzere çeşitli nedenlerden kaynaklanabilir:
|
Son cihaz etkinliği
Ayrıca, uygulamanızın son bir saat içinde belirli bir cihazda kaç kez bütünlük jetonu istediğini belirten son cihaz etkinliği özelliğini de etkinleştirebilirsiniz. Uygulamanızı, etkin bir saldırının göstergesi olabilecek beklenmedik, aşırı hareketli cihazlara karşı korumak için son cihaz etkinliğini kullanabilirsiniz. Her bir son cihaz etkinliği düzeyine ne kadar güveneceğinize, tipik bir cihazda yüklü uygulamanızın her saatte kaç kez bütünlük jetonu isteyeceğini tahmin ederek karar verebilirsiniz.
recentDeviceActivity
'ü almaya kaydolduğunuzda deviceIntegrity
alanında iki değer bulunur:
deviceIntegrity: {
deviceRecognitionVerdict: ["MEETS_DEVICE_INTEGRITY"]
recentDeviceActivity: {
// "LEVEL_2" is one of several possible values.
deviceActivityLevel: "LEVEL_2"
}
}
Öncelikle, uygulamanızın tüm cihazlarınızdaki tipik cihaz etkinliği düzeylerini görmek için verileri kontrol etmeniz gerekir. Ardından, bir cihaz çok fazla istek gönderdiğinde uygulamanızın nasıl yanıt vereceğine karar verebilirsiniz. Etkinlik biraz yüksekse kullanıcıdan daha sonra tekrar denemesini isteyebilirsiniz. Etkinlik çok yüksekse daha güçlü yaptırım önlemleri alabilirsiniz.
Standart ve klasik istekler
Play Integrity'yi uygulamanız kapsamında iki tür isteği dikkate almanız önemlidir. En hızlı yanıtı sağlamak için çoğu durumda standart istekler kullanmalısınız. Cihaz tasdik kaydı için yeni oluşturulmuş bir istek gerektiğinde ise klasik istekler kullanılmalıdır.
Klasik istek |
Standart istek |
---|---|
İstekler daha uzun sürer ve daha seyrek gönderilmelidir. Örneğin, oldukça değerli veya hassas bir işlemin gerçek olup olmadığını kontrol etmek için zaman zaman tek seferlik olarak Nadiren kullanın. |
İstekler düşük gecikmeli olup isteğe bağlı olarak kullanılabilir. Standart istek iki bölümden oluşur:
İsteğe bağlı olarak kullanın. |
Standart ve klasik istekler hakkında daha fazla bilgi için Play Integrity dokümanlarını okuyun.
Uygulama
Play Integrity API'yi kullanmaya başlamak için:
- Google Play Console'unuzda Play Integrity API yanıtlarını etkinleştirin ve bir Google Cloud projesine bağlayın.
- Uygulamanıza Play Integrity API'yi entegre edin.
- Kararlarla nasıl başa çıkacağınıza karar verin.
Play Integrity API varsayılan olarak uygulama başına günlük 10.000 isteğe izin verir. Günlük maksimum istek sayınızı artırma isteğinizi belirtmek için bu talimatları uygulayın. Günlük maksimum istek sayınızda artış elde edebilmek için uygulamanızın Play Integrity API'yi doğru şekilde uygulaması ve diğer dağıtım kanallarının yanı sıra Google Play'de kullanıma sunulmuş olması gerekir.
Play Integrity API ile ilgili dikkat edilmesi gereken noktalar
- Play Integrity API yanıtlarındaki hataları uygun şekilde ele almanız önemlidir. Hata kodlarına göre yeniden deneme ve yaptırım stratejileriyle ilgili kılavuzu uygulayın.
- Play Integrity API, yanıtlar için test araçları sunar.
- Cihazınızdaki bütünlük sonucunu görmek için bu adımları uygulayın.
- Play Integrity API'yi kullanmayla ilgili önerilen uygulamalar için bu güvenlik önlemlerini okuyun.
Otomatik Bütünlük Koruması (API >= 23)
Otomatik Bütünlük Koruması, uygulamanızı yetkisiz değişiklik ve yeniden dağıtım şeklinde gerçekleştirilen bütünlüğün kötüye kullanımına karşı koruyan bir kod koruma hizmetidir. Veri bağlantısı olmadan çalışır. Test öncesinde geliştiricinin herhangi bir işlem yapması ve arka uç sunucu entegrasyonu gerekmez.
Bu, sahtekarlığı azaltmaya nasıl yardımcı olur?
Otomatik bütünlük korumasını etkinleştirdiğinizde Google Play, uygulamanızın koduna denetimler ekler ve gelişmiş kod karartma ve tersine mühendisliği önleme teknikleri kullanarak bu denetimlerin kaldırılmasını zorlaştırır. Koruma, çalışma zamanında uygulamanızın bozulup bozulmadığını veya yeniden dağıtılıp dağıtılmadığını kontrol eder:
- Yükleyici denetimi başarısız olursa kullanıcılardan uygulamanızı Google Play'den indirmeleri istenir.
- Değişiklik denetimi başarısız olursa uygulama çalışmaz
Bu, kullanıcıları uygulamanızın değiştirilmiş sürümlerinden korumaya yardımcı olur.
Uygulama
Otomatik Bütünlük Koruması şu anda yalnızca belirli Play iş ortakları tarafından kullanılabilir. Bu özellik Google Play Console'unuzda kullanılamıyorsa ve erişmek istiyorsanız Google Play geliştirici desteğiyle iletişime geçin.
Sürüm oluştururken veya Uygulama bütünlüğü sayfasında (Sürüm > Uygulama bütünlüğü) korumayı etkinleştirebilirsiniz. Otomatik bütünlük koruması için uygulamanızın Play Uygulama İmzalama'yı kullanması gerekir.
Sürümünüzü üretime yayınlamadan önce korumalı uygulamanızı test ettiğinizden emin olun.
Göz önünde bulundurulması gereken noktalar
- Korumasız uygulama sürümlerini yayınlamama
- Kurcalama koruması çözümlerini bir arada kullanırken dikkatli olma
- Korunan uygulamanızı üretim sürümüne yayınlamadan önce test etme
- Kilitlenmelerde artış olup olmadığını normal şekilde izleme
- Uygulamanızın kırılmış sürümlerini Google Play'e bildirebilirsiniz