Segera setelah Anda merilis aplikasi, itu mungkin direkayasa balik. Ini berarti bahwa tidak ada yang dapat Anda lakukan untuk dilindungi 100% jika aplikasi yang sama (binari yang sama, pengaturan yang sama) didistribusikan ke semua pengguna Anda.
Jika Anda dapat menyesuaikan aplikasi untuk setiap pengguna, maka Anda memiliki kesempatan untuk mungkin tidak melarang beberapa aplikasi lain untuk menggunakan API Anda, tetapi setidaknya membatasi aplikasi ini dengan jumlah permintaan yang dapat dilakukan untuk API.
Bayangkan skema berikut:
- Klien menghubungkan dan mengirim pengidentifikasi uniknya (satu pengidentifikasi oleh pengguna).
- Server membalas dengan mengirimkan tantangan yang dienkripsi dengan kunci publik. Kunci publik ini dikaitkan dengan pengidentifikasi unik yang sebelumnya dikirim.
- Klien memecahkan tantangan dengan mendekripsi data menggunakan kunci pribadi dan mengirimkan rahasia yang didekripsi di balik kembali ke server.
- Server memverifikasi bahwa rahasia yang dikirimkan sesuai dengan yang awalnya dibuat.
Pengembang yang akan meretas aplikasi Anda dan berhasil mendapatkan kunci pribadi akan dapat menggunakan API Anda dari aplikasinya sendiri, tetapi ia akan mengidentifikasi dirinya sebagai dirinya sendiri untuk server Anda.
Jika pengguna yang sama dapat melakukan 10.000 permintaan ke API Anda per hari dan rata-rata, pengguna aktif membuat 2.000 permintaan per hari, itu berarti pengembang ini akan dapat menggunakan aplikasi sendiri dan mungkin memberikannya kepada teman-temannya, tetapi dia tidak akan bisa, katakanlah, menjualnya kepada ribuan orang, hanya karena itu akan bekerja hanya untuk beberapa menit di pagi hari.
Meskipun ini membantu, itu bukan 100% bukti juga. Bagaimana jika peretas menemukan cara untuk mengekstrak kunci pribadi dari aplikasi Anda ketika aplikasinya sendiri diinstal pada perangkat?
Catatan tambahan yang tidak menjawab pertanyaan Anda, tetapi masih mungkin bermanfaat: jangan pikirkan API sebagai alat untuk produk utama Anda (aplikasi seluler). Pikirkan itu sebagai produk kelas satu, produk yang mungkin dibayar. Model yang sama digunakan selama bertahun-tahun oleh Amazon dan Google, mulai digunakan secara aktif oleh Microsoft dengan Azure, dll.
Segera setelah Anda mempertimbangkan API bukan sebagai alat sekunder yang dikurangi menjadi perbudakan untuk aplikasi seluler baru Anda yang mengkilap, tetapi produk yang sebenarnya, pada tingkat yang sama dengan aplikasi apa pun yang dilihat pengguna, Anda mulai kurang memikirkan bagaimana melindungi API terhadap penggunaan oleh aplikasi lain, dan lebih lanjut tentang monetisasi API itu sendiri. API semacam itu dapat digunakan oleh aplikasi Anda yang merupakan pelanggannya, atau aplikasi lain apa pun, yang dikembangkan secara bebas oleh siapa saja. Ini memiliki beberapa manfaat:
Membuat API sehingga hanya akan digunakan oleh aplikasi Anda sulit dan mahal. Waktu dan uang ini dapat digunakan untuk sesuatu yang lebih bermanfaat.
Membuka API Anda untuk umum dapat memiliki manfaat besar bagi Anda dan dunia. Bayangkan Anda adalah arsitek hebat dan pengembang hebat, jadi Anda telah membuat API yang luar biasa hebat, tetapi keterampilan desainer visual Anda payah dan Anda benar-benar tidak mengerti apa pun tentang desain interaksi, dll. Jika Anda menyembunyikan API Anda, satu-satunya Yang akan diketahui orang adalah bahwa Anda telah membuat aplikasi seluler yang tidak dapat digunakan dan jelek. Jika API Anda bersifat publik, pengembang lain akan tertarik dengan kualitasnya dan menulis aplikasi hebat untuknya, memberi Anda banyak uang.
Anda tidak pernah membayangkan bagaimana orang lain dapat menggunakan API Anda. Inilah yang terjadi dengan Kinect. Awalnya, Microsoft menciptakan Kinect untuk game. Ketika Microsoft membuka API untuk umum, mereka tidak pernah membayangkan itu akan digunakan beberapa tahun kemudian oleh aplikasi ilmiah, sektor kesehatan, dll. Mirip dengan API web: lebih banyak pengembang yang menggunakannya, lebih luas ide yang akan digunakan.