Anda tidak dapat menolak koneksi secara efektif kecuali jika Anda memberikan kunci pribadi yang dapat dicabut secara individual oleh setiap pelanggan. Tapi ini mungkin berlebihan. Anda tidak memerlukan solusi antipeluru jika kebanyakan orang tidak mau repot menembakkan peluru.
Ini pertanyaan keamanan, jadi mari kita gambarkan model ancaman dan strategi mitigasi.
Misalkan Anda memiliki URL yang menekan yang dapat menimbulkan biaya nyata bagi Anda (mis. Biaya pemrosesan), dan Anda ingin melindunginya dari serangan DoS sederhana dan dari aplikasi peniru.
Gunakan SSL untuk menyembunyikan koneksi agar tidak mudah dianalisis. Gunakan nomor port non-obviuos, urutan redirect, pertukaran cookie untuk menyulitkan koneksi sebelum Anda melakukan bagian mahal dari permintaan. Gunakan beberapa kode rahasia yang dipanggang ke dalam aplikasi Anda untuk memberi tahu server bahwa ia harus menerima koneksi.
Sekarang seseorang tidak dapat mempelajari URL mahal untuk hit hanya dengan menjalankan sniffer paket, atau dengan melihat string seperti URL dalam kode Anda. Seorang penyerang potensial harus mendekompilasi aplikasi Anda.
Anda tidak dapat benar-benar melindungi kode Anda dari dekompilasi dan / atau dijalankan di bawah debugger. Penyerang akhirnya mempelajari kunci rahasia dan urutan koneksi.
Anda melihat bahwa Anda mulai menerima permintaan pemalsuan dengan URL Anda yang mahal: baik dalam bentuk serangan, atau dalam bentuk aplikasi peniru yang harus mengakses layanan Anda agar dapat dijalankan, atau mungkin kode eksploit diposting secara publik. Anda tidak bisa memberi tahu permintaan jahat dari permintaan yang sah.
Buat pembaruan kecil gratis untuk aplikasi Anda, dengan kunci rahasia yang berbeda. Itu harus mengenai URL mahal berbeda yang menyajikan data yang sama dengan URL mahal dikompromikan. Untuk beberapa waktu, buat kedua URL dapat diakses.
Tonton basis pengguna Anda beralih ke versi yang diperbarui. Perlambat URL mahal yang dikompromikan dan akhirnya 404. Anda baru saja memitigasi pelanggaran keamanan, semoga tanpa kehilangan terlalu banyak. Kembali ke titik awal.
Penafian: Saya bukan ahli keamanan.