Ada banyak cara untuk mengimplementasikan sesuatu seperti ini, tetapi inilah yang seharusnya tidak terlalu sulit untuk dilakukan:
Anda memerlukan situs web yang tersedia untuk umum di suatu tempat yang meng-host file yang berisi hash kunci lisensi yang telah dimasukkan daftar hitam. Bagaimana Anda mengelola file ini terserah Anda, tetapi file itu sendiri hanya perlu memiliki hash per baris.
Kemudian, secara berulang, perangkat lunak Anda memulai pengunduhan file ini (sebagian besar bahasa sisi server menyediakan ini) dan kemudian mencari hash kunci lisensi yang diinstal. Jika ditemukan, maka aplikasi tahu bahwa itu harus mati sampai blacklist dihapus.
MD5 atau serupa ditambah rahasia harus cukup untuk ini. Anda bisa menjadi pelamun dan meminta aplikasi mengirimkan permintaan ke situs Anda dan mencarinya di database dengan cepat, tetapi file tersebut (untuk apa yang saya asumsikan semoga menjadi daftar pendek) mudah-mudahan tetap kecil dan mungkin cara termudah.
Bagian yang lebih sulit adalah menjaga aplikasi tetap mati. Bagaimanapun, Anda harus menyimpan ini di suatu tempat secara internal, yang berarti jika terlalu jelas itu bisa dengan mudah ditumbangkan, dan bahkan jika itu tidak terlalu jelas, itu dapat dengan mudah dikembalikan dengan mengembalikan tabel yang sesuai (s) / file. Karena itu saya menyarankan metode perlindungan kedua juga.
Metode ini akan menyimpan "LIVE" atau "MATI" (atau sesuatu yang cukup mirip) dalam tabel atau file, tetapi sekali lagi HASHed. Ini perlu diiris dengan garam Anda dan cap waktu. Setiap kali halaman aplikasi Anda berjalan, periksa nilai ini dengan versi hash "LIVE" + garam + cap waktu dan kemudian izinkan untuk rentang cap waktu yang valid (misalnya, satu hari, dua hari, satu minggu, satu bulan, dll. Perlu diingat semakin besar rentang performa yang lebih keras akan mendapatkan pukulan.). Selama semuanya cocok (atau kecocokan ditemukan), aplikasi itu hidup; jika tidak, bahkan jika nilai dalam file atau tabel khusus adalah "LIVE", itu masih akan mati jika ada upaya untuk memulihkan dari cadangan karena cap waktu akan berada di luar ambang Anda.
Singkatnya (ini mengasumsikan bahwa Anda memiliki beberapa metode programatik untuk memeriksa validitas kunci lisensi, seperti semacam checksum atau metode lain):
- CheckBlacklist
- Ubah Kunci Lisensi menjadi hash dengan garam
- Minta file daftar hitam dari server
- Apakah hash saya ada di file?
- Jika YA, maka simpan hash "MATI" + garam + cap waktu (terpotong ke hari; tidak perlu menyimpan jam + hari + menit)
- Jika TIDAK, maka simpan hash "LIVE" + garam + stempel waktu (terpotong)
- IsKeyAlive
- Buat hash dari "LIVE" + garam + cap waktu terpotong
- Muat hash DeadAlive
- Apakah mereka setuju?
- Jika YA, maka kita hidup; mengembalikan TRUE.
- Jika TIDAK, maka kita mungkin mati, tetapi kita mungkin masih berada dalam jendela timestamp kita:
- Kurangi satu hari dari cap waktu dan ulangi hash.
- Apakah kita setuju sekarang?
- IYA? Kembalikan BENAR
- Tambahkan satu hari ke cap waktu dan ulangi hash
- Apakah kita setuju sekarang?
- IYA? Kembalikan BENAR
- Pada titik ini, kami berada di luar rentang cap waktu tanpa kecocokan. Kembalikan SALAH. (Bunuh aplikasi)
Sekarang, kebaikan tahu ada sejuta dan satu cara ini bisa gagal. Pertimbangkan semua cara yang mungkin dan bangun sistem yang andal (termasuk yang mengasumsikan klien benar jika file daftar hitam tidak dapat diunduh). Uji, uji, uji, dan uji lagi sebelum digunakan, karena jika salah, Anda akan kehilangan kepercayaan klien.