Özetlemek:
- API'sını kullanabilmeniz için bir satıcı tarafından size verilen bir API anahtarınız var ve bu anahtarın başkaları tarafından bilinmesini engelleme yükümlülüğünüz var
- Uygulama kodunuzda söz konusu satıcının API'sını (API anahtarını gerektiren) çağırıyorsunuz
- Uygulamayı müşterilerin ikili dosyalara erişebildiği ve dolayısıyla kodu koda dönüştürme / deobfuscasyon yapabileceği veya trafiği kesebileceği sistemlere dağıtıyorsunuz
Bu anahtarın güvenliğinin aşılmasını önlemenin en iyi yolu, anahtarın kontrolünü elinizde tutmaktır. Bu, hiçbir zaman sizin dışında herhangi birinin ikiliyi okuyabileceği ve asla kontrol etmediğiniz bir iletişim bağlantısının üzerinden geçemeyeceği bir sunucuya dağıtılmaması gerektiği anlamına gelir.
Sonuçta, ikili dosyalar sizin kontrolünüz dışındaysa, içindeki her şey sizin kontrolünüz dışındadır. Benzer şekilde, birisi trafiği kesebilirse API anahtarını yakalayabilir ( muhtemelen SSL kullanıyor olsanız bile ).
Bunu başarmanın iki temel yolunu görebiliyorum, her ikisi de konuşlandırılmış uygulamanıza özel API anahtarınızı içermiyor:
Her dağıtım için benzersiz bir API anahtarı edinin
Bu, satıcı ile anahtarlar elde edebileceğiniz veya müşterilerinizin anahtarları edinmesini sağlayabileceğiniz bazı ek ilişkiler gerektirir.
Bu, örneğin Google Haritalar API'sını kullanan ürünlerde aslında oldukça yaygındır. Yazılımın yaratıcısı, kopyasını geliştirirken / çalıştırırken kullandıkları kendi anahtarlarına sahiptir, ancak yazılımı yazılıma dahil etmez ve bunun yerine, söz konusu yazılımı yükleyen kullanıcı olarak Google'a gidip kendi API'nizi edinmenizi gerektirir tuşuna basın. Yazılımın yalnızca Google Maps API anahtarını kullanacak şekilde ayarlamak için bir yapılandırma seçeneği vardır.
Aslında, API anahtarları yayınlayan birçok tedarikçi, bu şekilde bir şeyler yapmanızı gerektirir, bu nedenle yine de yanlış yolda olabilirsiniz ve bu, satıcının Hizmet Şartları'na göre kullanmanıza izin verilen tek çözüm olabilir ve / veya onlarla sahip olabileceğiniz yasal sözleşmeler.
Proxy kullanın
Uygulamanızın API'larınızı (sunucularınızda) çağırdığı bir proxy API ayarlayın ve karşılığında API'nız anahtarı kullanarak satıcının API'sını arar.
API'nız üzerinde ek korumaya ihtiyacınız olabilir, örneğin, yalnızca uygulamanızın onu kullandığından emin olmak için bir şey. Bu şu şekilde yapılabilir:
- işlevselliği o kadar özel bir şey haline getirmez ki uygulamanız bunu kullanabilir
- IP beyaz listeleri
- Sunucularınız için halihazırda sahip olduğunuz bazı mevcut lisanslama / yetkilendirme mekanizması
- Müşterilerinize anahtarlar verebileceğiniz kendi API anahtar sisteminiz
Burada akılda tutulması gereken şey, bunu yapmanıza izin verilmeyebilir. Satıcınız bir "birleştirme hizmeti" veya proxy oluşturmanızı engelleyen Hizmet Şartları'na veya yasal sözleşmelere sahip olabilir, bu nedenle bunu kontrol etmeniz gerekir.
Hatalı Davranışı Ele Alma
Anahtarınız tehlikeye atılmasa bile, müşterilerinizden biri satıcının anahtarınızı engellemesine neden olan bir şey yapıyorsa, birdenbire TÜM müşterileriniz devre dışı bırakılır ve tek çözüm diğer herkesi güncellemektir.
Benzer şekilde, sen senin müşterilerinden biri engellemek istediğiniz o zaman herkes için bir güncelleme veren ve ardından tuşuna devre dışı bırakmadan bunu yapamaz (örneğin, bunlar, vs, yazılım korsan gelmiş ödeme durduruldu).
Bunun bir avuç müşterinin ötesindeki herhangi bir şeyin lojistiği hızla savunulamaz hale gelecektir.
Proxy olarak hareket ediyor ya da her kurulum için benzersiz bir anahtarınız olsun, bu durumlardan herhangi birini nispeten kolayca (ve başkalarına çok az etkisi olan veya hiç etkisi olmayan) halledebilirsiniz.
Yazılımınıza gömülü iken anahtarı korumaya çalışmak nihayetinde boşuna bir çabadır. Ne yaparsanız yapın, ikili, kaynak ve / veya iletişim kanalına erişimi olan ve anahtarına erişebilecek kadar kararlı olan herhangi bir saldırgan bunu yapabilir.
Bu yüzden gömmeyin. "Tek kazanan hamle oynamak değil."