Google Play, hem kullanıcıların hem de geliştiricilerin güvenliğini sağlamaya kararlıdır. Başarılı bir uygulama işletmesi kurmanın, kötü niyetli kişilere karşı proaktif bir şekilde savunma yaparak yatırım getirinizi güvence altına alan güvenilir bir platforma bağlı olduğunu biliyoruz.
Bu belgede, faturalandırma entegrasyonunuza yönelik saldırıları önleme ve uygulamanızda kötüye kullanımın etkisini azaltma ile ilgili öneriler açıklanmaktadır.
Koruma düzeyinizi artırma
Aşağıdaki API'ler ve araçlar, uygulamanızdaki riskleri azaltabilir:
- Voided Purchases API: İptal edilen siparişlere erişimi iptal edin.
- Karartılmış Hesap Kimliği: Birden fazla cihazın kısa süre içinde aynı hesaptan satın alma işlemi yapmasını tespit etmeye yardımcı olur.
- Arka uç tüketimi: Purchases.products:consume gibi araçlar, işletme mantığını güvenli arka uçlarınıza kaydırarak istemci tarafında yapılan değişiklikleri önler. Bu platform API'lerini kullanmanın yanı sıra entegrasyonlarınızı yetkisiz erişime karşı daha da güvenli hale getirmek için aşağıdaki en iyi uygulamaları benimseyin.
Lokasyon sahteciliğini önleme
Google Play, kötü niyetli kişilerin bölgesel para birimi farklılıklarından yararlanmak için sahte konumlar kullanmasını (konum sahteciliği olarak da bilinir), abonelik promosyonlarını ve teşviklerini kötüye kullanmasını ve hediye kartı dolandırıcılığı yapmasını önlemek için yerleşik korumalar sunar.
Hassas mantığı arka uçunuza taşıma
Uygulama tasarımınızın izin verdiği ölçüde hassas verileri ve mantığı kontrol ettiğiniz bir arka uç sunucusuna taşıyın. Bir ön uç cihazda ne kadar çok veri ve mantık varsa değiştirilme veya kurcalanma olasılığı o kadar yüksek olur.
Örneğin, online bir satranç oyunu, ön uçta her zaman yasal hamleler gönderildiğine güvenmek yerine tüm hamleleri arka uçta doğrulamalıdır.
Ayrıca, güvenlik açıkları veya güvenlik sorunları bulursanız sistem tasarımınıza bağlı olarak, hata ayıklama, düzeltme ve güncellemeleri ön uç yerine arka uçta dağıtmak daha kolay olabilir.
Hakları vermeden önce satın alma işlemlerini doğrulama
Hassas veriler ve mantıkla ilgili, arka uçta işlenmesi gereken özel bir durum, satın almayı doğrulama ve onaylamadır. Kullanıcı satın alma işlemi yaptıktan sonra şunları yapmanız gerekir:
- İlgili purchaseToken değerini arka ucunuza gönderin. Bu nedenle, tüm satın alma işlemlerinin purchaseToken değerlerinin kaydını tutmanız gerekir.
- Mevcut satın alma işlemine ait purchaseToken değerinin önceki purchaseToken değerleriyle eşleşmediğini doğrulayın. purchaseToken, genel olarak benzersizdir. Bu nedenle, bu değeri veritabanınızda birincil anahtar olarak güvenle kullanabilirsiniz.
- Satın alma işleminin meşru olduğunu Google ile doğrulamak için Google Play Developer API'deki Purchases.products:get veya Purchases.subscriptionsv2:get uç noktalarını kullanın.
- Satın alma işleminin meşru olduğuna, geçmişte kullanılmadığına veya işlenmediğine ve kullanıcının tüm uygunluk ve sahtekarlık kontrollerini geçtiğine inanıyorsanız uygulama içi öğe veya abonelik için güvenle hak verebilirsiniz.
- Uygunluk ve kötüye kullanım kontrolleri: Kullanıcının öğe için hâlâ uygun olduğunu doğrulayın. Fatura akışını obfuscatedAccountId veya obfuscatedProfileId ile yapılandırdıysanız satın alma eşlemesinin sisteminizdeki beklenen kullanıcı hesabıyla eşleştiğinden emin olun. Arka uçunuzun gerektirdiği ek kötüye kullanım, risk veya güvenlik kontrollerini gerçekleştirin.
- Yasa dışı satın alma işlemleri için açıkça geri ödeme yapılması: Satın alma işlemi doğrulama veya kötüye kullanım kontrollerinizde başarısız olursa hak vermeyin. Onaylanmadığı için satın alma işleminin otomatik olarak geri ödenmesine izin vermek yerine (işleme zaman aşımından da kaynaklanabileceğinden bu durum belirsizdir)
revokeparametresitrueolarak ayarlanmış Orders:refund uç noktasını (veya benzer bir Play Developer API'yi) kullanarak satın alma işlemini açıkça geri ödeyin.revokeparametresinin ayarlanması, erişimin iptal edilmesini sağlar. Böylece kullanıcı artık satın alma işlemine sahip olmaz ve Google Play'e, satın alma işleminin geliştirici tarafından reddedildiğine dair net bir sinyal verilir.
- Aboneliklerde, Purchases.subscriptionsv2:get içinde linkedPurchaseToken ayarlandığında, birden fazla kullanıcının aynı satın alma işleminden yararlanmasını önlemek için linkedPurchaseToken'ı veritabanınızdan da kaldırmanız ve linkedPurchaseToken'a verilen hakkı iptal etmeniz gerekir.
- Yetkiyi yalnızca satın alma durumu PURCHASED olduğunda vermeli ve PENDING durumundaki satın alma işlemlerini doğru şekilde ele aldığınızdan emin olmalısınız. İPTAL EDİLDİ durumundaki satın alma işlemlerinde artış varsa satın alma işlemi BEKLEMEDE durumundayken hak veriyor olabilirsiniz. Daha fazla bilgiyi Bekleyen işlemleri işleme başlıklı makalede bulabilirsiniz.
Yetki verdikten sonra tüketilebilir bir ürünü tüketmek ve onaylamak istiyorsanız güvenli arka uç sunucunuzda Purchases.products:consume Play Developer API'yi kullanın. Tüketilmeyen bir ürünü veya aboneliği onaylamak için güvenli arka uç sunucunuzda Purchases.products:acknowledge veya Purchases.subscriptions:acknowledge Play Developer API uç noktasını çağırın. Kullanıcıya satın alma yetkisi verildiğini Google Play'e bildirdiği için onay gereklidir. Yetki verdikten hemen sonra satın alma işlemini onaylamanız gerekir.
Satın alma işlemini uygulamanız aracılığıyla istemci tarafında onaylayabileceğinizi veya kullanabileceğinizi unutmayın. Ancak sunucu tarafı API'leri, zayıf ağ bağlantısı ve kötü amaçlı etkinlik gibi sorunlara karşı ek koruma sağlar. Örneğin, bir kullanıcının uygulamanızdan bir öğe satın aldığını ancak satın alma işlemi doğrulanırken ağ bağlantısını kaybettiğini düşünün. Sunucu onayı olmadan, onay sürecini tamamlamak için uygulamada tekrar oturum açmaları gerekebilir. Aksi takdirde, kullanıcı üç gün içinde tekrar giriş yapmazsa satın alma işlemi onaylanmadığı için otomatik olarak geri ödenir. Sunucu onayı, Google Play sunucuya satın alma işleminin geçerli olduğunu bildirdiği anda onay göndererek bu senaryoyu önler.
Satın alma işleminin onaylanması ve tüketimi hakkında daha fazla bilgi için Satın alma işlemlerini işleme başlıklı makaleyi inceleyin.
Kilidi açılmış içeriğinizi koruma
Kötü niyetli kullanıcıların kilidi açılmış içeriğinizi yeniden dağıtmasını önlemek için bu içeriği APK dosyanıza dahil etmeyin. Bunun yerine aşağıdakilerden birini yapın:
- İçeriğinizi yayınlamak için içerik feed'i gibi gerçek zamanlı bir hizmet kullanın. İçerikleri anlık bir hizmet üzerinden sunmak, içeriklerinizi güncel tutmanıza da olanak tanır.
- İçeriğinizi yayınlamak için uzak bir sunucu kullanın. Uzak bir sunucudan veya anlık hizmetten içerik yayınladığınızda kilidi açılmış içeriği cihazın belleğinde veya SD kartında saklayabilirsiniz. İçeriği SD kartta saklıyorsanız içeriği şifrelediğinizden ve cihaza özel bir şifreleme anahtarı kullandığınızdan emin olun.
Geçersiz kılınan satın alma işlemlerini tespit etme ve ele alma
Geçersiz kılınan satın alma işlemleri, iptal edilen, geri alınan veya ters ibraz edilen satın alma işlemleridir. Geçersiz kılınan bir satın alma işlemi daha önce kullanıcıya uygulama içi öğeler veya başka içerikler vermişse Voided Purchases API'yi kullanarak satın alma işleminin geçersiz kılınma nedenini ve geri alabileceğiniz ilişkili içerikleri öğrenebilirsiniz.
Uygulama içi öğeler ve abonelikler için yapılan satın alma işlemleri, aşağıdakiler dahil olmak üzere çeşitli nedenlerle iptal edilebilir:
- Kullanıcı, geliştirici veya Google tarafından satın alma işlemi iptal edildiğinde (onaylanmamış otomatik iptal edilen satın alma işlemleri dahil) Aboneliklerde, bunun abonelik satın alma işleminin iptaliyle ilgili olduğunu, aboneliğin kendisinin iptaliyle ilgili olmadığını unutmayın.
- Satın alma işlemi için ters ibrazda bulunulduğunda
Uygulama geliştirici, kullanıcı siparişini iptal eder veya geri ödeme yapar ve konsolda "erişimi iptal et" seçeneğini işaretler. Geçersiz kılınan satın alma işleminin nedenine bağlı olarak ve önceki kullanıcı davranış verilerini dikkate alarak bir işlem planı belirleyebilirsiniz. Aşağıdakilerden birini veya daha fazlasını uygulamanızı öneririz:
Geri alma işlemleri gerçekleştirme: Satın alma işlemi geçersiz kılındığında, kullanılmamış öğeleri hiç satın alınmamış gibi geri alabilirsiniz. Örneğin, oyun içi para birimi satın alma işlemi iptal edildiyse kullanıcıya daha önce verilen para birimini geri alabilirsiniz. Kullanıcı para birimini zaten harcamışsa para birimi bakiyesini negatif olarak ayarlamayı ve para birimi bakiyesi pozitif olana kadar uygulama etkinliğini ve gelecekteki satın alma işlemlerini sınırlamayı düşünebilirsiniz.
Birden fazla uyarı uygulama: İlk kez ihlalde bulunanlar için daha az sert önlemler (ör. uygulama içi uyarılar gösterme) almayı düşünebilirsiniz. Tekrar eden ihlaller için daha ciddi önlemler almayı düşünün.
Satın alma işlemlerini geçici olarak devre dışı bırakın: Birden fazla uyarı uygulamasına benzer şekilde, satın alma işlemlerinin neden geçersiz kılındığını daha ayrıntılı bir şekilde inceleyene kadar geçersiz kılınan satın alma işlemleri olan kullanıcılar için satın alma işlemlerini devre dışı bırakmayı düşünebilirsiniz.
Uygulamanıza erişimi geçici veya kalıcı olarak engelleme: Tekrarlanan kötü amaçlı etkinliklerin olduğu aşırı durumlarda, uygulamanıza erişimi geçici veya kalıcı olarak engellemeyi düşünebilirsiniz.
Voided Purchases API'ye sık sık çağrı yapın: Bir veya daha fazla geçersiz kılınmış satın alma işlemi tespit ettiğinizde, kullanıcı bunları kullanmadan önce geri almak için Voided Purchases API'ye daha sık çağrı yapmayı düşünebilirsiniz. Voided Purchases API kotaları hakkında daha fazla bilgiyi Voided Purchases API belgelerinde bulabilirsiniz.
Google'ın sahtekarlığı gerçekleşmeden önce tespit etmesine yardımcı olma
Bazı sahtekarlık türleri, etkinliklerini gizlemek için birden fazla Google ve uygulama içi hesap oluşturan kötü niyetli kullanıcılarla ilgilidir.
Google'ın Google Hesaplarını uygulama içi hesaplarla eşlemesine yardımcı olmak için oluşturucuda setObfuscatedAccountId ve BillingFlowParams için setObfuscatedProfileId yöntemlerini kullanın.
Google, bu verileri şüpheli davranışları tespit etmek ve bazı sahtekarlık işlemlerini tamamlanmadan önce engellemek için kullanır.
Ticari marka ve telif hakkı ihlallerine karşı işlem yapma
İçerik yayınlamak veya yönetmek için uzak bir sunucu kullanıyorsanız uygulamanız, kullanıcı içeriğe her eriştiğinde kilidi açılan içeriğin satın alma durumunu doğrulayacak şekilde ayarlanmalıdır. Bu sayede, gerektiğinde kullanımı iptal edebilir ve korsanlığı en aza indirebilirsiniz. İçeriğinizin Google Play'de yeniden dağıtıldığını görürseniz hızlı ve kararlı bir şekilde hareket etmeniz gerekir. Daha fazla bilgi için Telif Hakkı Yardım Merkezi'ndeki Telif Hakkıyla İlgili Sık Sorulan Sorular sayfasına bakın.