Google Play, hem kullanıcıların hem de geliştiricilerin güvenliğini sağlamayı taahhüt eder. 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ı önlemeye ve uygulamanızdaki kötüye kullanımın etkisini azaltmaya yönelik ö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: Kısa süre içinde aynı hesapta birden fazla cihazdan satın alma işlemi yapıldığını tespit etmeye yardımcı olur.
- Arka uç tüketimi: Purchases.products:consume gibi araçlar, iş mantığını güvenli arka uçlarınıza kaydırarak istemci tarafında müdahaleyi ö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 (lokasyon sahteciliği olarak da bilinir), abonelik promosyonlarını ve teşviklerini kötüye kullanmak ve hediye kartı dolandırıcılığı yapmak için sahte konumlar kullanmasını önleyen yerleşik korumalar sağlar.
Hassas mantığı arka ucunuza 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ştirilmeye veya kurcalanmaya karşı o kadar savunmasız olur.
Örneğin, online bir satranç oyunu, ön ucun her zaman geçerli hamleler gönderdiğine güvenmek yerine arka uçtaki tüm hamleleri 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.
Yararlanma hakkı vermeden önce satın alma işlemlerini doğrulama
Arka uçta işlenmesi gereken hassas veriler ve mantıkla ilgili özel bir durum, satın alma doğrulama ve onaylama işlemidir. Kullanıcı satın alma işlemi yaptıktan sonra:
- İlgili purchaseToken'ı 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 yasal 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 inanıyorsanız ve kullanıcı tüm uygunluk ve sahtekarlık kontrollerinizi geçiyorsa uygulama içi öğe veya abonelik için güvenli bir şekilde 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. Faturalandırma 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ğini kontrol edin. 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 geri ödemeler: Satın alma işlemi doğrulama veya kötüye kullanım kontrollerinizde başarısız olursa hak vermeyin ve satın alma işlemini kabul etmeyin ya da kullanmayın. Satın alma işleminin onaylanmaması nedeniyle otomatik olarak geri ödenmesine izin vermek yerine (bu durum, işlem zaman aşımından da kaynaklanabileceği için belirsizdir), abonelikler için
purchases.subscriptionsv2:revokeuç noktasını ("fullRefund": {}ile) veya tek seferlik ürünler içinrevokeparametresitrueolarak ayarlanmışOrders:refunduç noktasını kullanarak satın alma işlemini açıkça iptal edin ve geri ödeyin. Satın alma işleminin iptal edilmesi, kullanıcının satın alma işlemine artık erişememesini sağlar ve Google Play'e, satın alma işleminin geliştirici tarafından reddedildiğine dair net bir sinyal gönderir.
- Abonelikler için Purchases.subscriptionsv2:get içinde linkedPurchaseToken ayarlandığında, birden fazla kullanıcının aynı satın alma işlemi için hak sahibi olmamasını sağlamak amacıyla linkedPurchaseToken'ı veritabanınızdan kaldırmanız ve linkedPurchaseToken'a verilen hakkı iptal etmeniz gerekir.
- Yetkiyi yalnızca satın alma durumu PURCHASED olduğunda vermeli ve bekleyen 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 ani bir artış varsa satın alma işlemi henüz BEKLEMEDE durumundayken hakları 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 Google 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. Onay, kullanıcıya satın alma hakkı verildiğini Google Play'e bildirdiği için gereklidir. Yetki verdikten hemen sonra satın alma işlemini onaylamanız gerekir.
Satın alma işlemini uygulamanız üzerinden istemci tarafında onaylayabilir veya tüketebilirsiniz. Ancak sunucu tarafı API'ler, 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ın kesildiğini varsayalım. 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, satın alma onayı eksikliği nedeniyle otomatik olarak geri ödenir. Sunucu onayı, Google Play satın alma işleminin geçerli olduğunu sunucuya bildirdiği anda onay göndererek bu senaryoyu önler.
Satın alma onayı ve tüketim 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ü amaçlı 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. İçeriği gerçek zamanlı bir hizmet aracılığıyla sunmak, içeriğinizi güncel tutmanıza da olanak tanır.
- İçeriğinizi yayınlamak için uzak sunucu kullanın. Uzak bir sunucudan veya anlık hizmetten içerik yayınladığınızda kilidi açılmış içeriği cihaz belleğinde veya cihazın 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 satın alma işlemlerini tespit etme ve yönetme
Geçersiz kılınan satın alma işlemleri, iptal edilen, geri alınan veya ters ibraz edilen satın alma işlemleridir. İptal edilen bir satın alma işlemi daha önce bir kullanıcıya uygulama içi öğeler veya başka içerikler sağladıysa satın alma işleminin iptal edilme nedenini ve geri alabileceğiniz tüm ilişkili içerikleri öğrenmek için Voided Purchases API'yi kullanabilirsiniz.
Uygulama içi öğeler ve abonelikler için yapılan satın alma işlemleri aşağıdakiler dahil çeşitli nedenlerle iptal edilebilir:
- Kullanıcı, geliştirici veya Google tarafından satın alma işlemi iptal edildiğinde (onaylanmamış otomatik olarak iptal edilen satın alma işlemleri dahil) Abonelikler için bu, aboneliğin kendisini iptal etmek yerine abonelik satın alma işlemini iptal etmeyi ifade eder.
- Bir satın alma işlemi için ters ibraz yapıldığında
Uygulama geliştirici, kullanıcı siparişini iptal eder veya geri ödeme yapar ve konsolda "iptal et" seçeneğini işaretler. İptal edilen satın alma işleminin nedenine bağlı olarak ve önceki kullanıcı davranış verilerini dikkate alarak bir işlem planına karar verebilirsiniz. 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 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ı uygulaması: İlk kez ihlalde bulunanlar için daha az sert önlemler (ör. uygulama içi uyarılar gösterme) almayı düşünebilirsiniz. Tekrar eden ihlallerde daha ciddi önlemler alın.
Satın alma işlemlerini geçici olarak devre dışı bırakma: Birden fazla ihtar uygulamasında olduğu gibi, satın alma işlemlerinin neden geçersiz kılındığını daha ayrıntılı bir şekilde araştırana 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ırakabilirsiniz.
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'yi sık sık çağırın: Bir veya daha fazla iptal edilmiş satın alma işlemi tespit ettiğinizde, kullanıcılar satın aldıkları ürünleri tüketmeden önce bu işlemleri geri almak için Voided Purchases API'yi daha sık çağırabilirsiniz. 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ı olun
Bazı sahtekarlık türleri, etkinliklerini gizlemek için birden fazla Google ve uygulama içi hesap oluşturan kötü amaçlı kullanıcılarla ilgilidir.
Google'ın Google Hesaplarını uygulama içi hesaplarla eşlemesine yardımcı olmak için BillingFlowParams oluşturucusunda setObfuscatedAccountId ve setObfuscatedProfileId yöntemlerini kullanın.
Google, bu verileri şüpheli davranışları tespit etmek ve bazı sahtekarlık amaçlı işlem türlerini 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 sunucu kullanıyorsanız uygulamanızın, kullanıcı içeriğe her eriştiğinde kilidi açılan içeriğin satın alma durumunu doğrulamasını sağlayın. 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 harekete geçin. Daha fazla bilgi için Telif Hakkı Yardım Merkezi'ndeki Telif Hakkıyla İlgili Sık Sorulan Sorular sayfasına bakın.