Saya bingung oleh permintaan dari manajer saya. Saya bekerja untuk startup kecil dan kami mengembangkan aplikasi web untuk tarif tetap dengan perjanjian pemeliharaan untuk perusahaan JAUH lebih besar. Mengetahui cerita-cerita horor tentang bagaimana perusahaan besar hanya akan membayar tagihan mereka sampai detik terakhir, kami memutuskan bahwa kami ingin melindungi diri sendiri dengan dapat melisensikan aplikasi web ini dengan cara bahwa jika kami tidak dibayar, perangkat lunak tidak lagi berfungsi.
Saya telah melihat ini dilakukan sebelumnya untuk aplikasi desktop namun ini akan menjadi aplikasi web yang akan mereka host secara internal dan tidak akan dapat diakses dari Internet.
Apa pendekatan terbaik untuk melakukan ini, kami ingin memiliki jejak kecil dan ingin kemampuan untuk memperbarui kunci lisensi yang telah mereka bagikan.
Adakah yang melakukan hal serupa? Apakah kita sepenuhnya keluar dari pikiran kita? Adakah yang punya saran yang lebih baik?
sumber
Jawaban:
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):
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.
sumber
license-server.example.com: no route to host
Sekarang apa? Server lisensi mungkin bahkan tidak ada di masa depan - dan jangan bilang bahwa perusahaan Anda akan tetap hidup dalam dua puluh tahun, itu agak tidak mungkin secara statistik.Jawaban lain telah melakukan pekerjaan yang baik untuk meliput sisi teknis. Tapi tolong pertimbangkan sisi hukumnya.
Apakah Anda bahkan memiliki hak untuk memblokir aplikasi mereka jika mereka tidak membayar? Jika Anda tidak menyebutkan ini sebelumnya dalam kontrak, Anda mungkin tidak memiliki hak untuk melakukannya, bahkan jika pembayaran lewat (seperti Anda tidak selalu berhak untuk mengambil kembali sesuatu yang Anda jual). Juga, banyak negara memiliki undang-undang khusus yang melarang "manipulasi program komputer" - apa yang Anda lakukan mungkin dianggap seperti itu dan bahkan dapat membuat Anda terkena pertanggungjawaban pidana.
Jadi saya sarankan untuk mendiskusikan hal ini dengan seorang pengacara terlebih dahulu, untuk menghindari masuk ke dalam air panas.
Pada akhirnya, mungkin lebih baik hanya mengandalkan sistem hukum. Jika mereka tidak membayar, bernegosiasi, dan jika itu tidak membantu, tuntut saja. Di banyak negara, tuntutan relatif tidak menyakitkan & murah jika situasi kontraknya jelas (di Jerman misalnya Anda bisa mendapatkan Mahnbescheid dengan harga kurang dari 20 €).
sumber
Jika mereka hosting secara internal, bagaimana ini berbeda dari perangkat lunak lain yang Anda kirimkan? Cari tahu apa yang akan Anda lakukan jika Anda mengirim, katakanlah, aplikasi tampilan inventaris desktop, dan lakukan itu.
sumber
Tergantung sistemnya. Apakah Anda memperluas kerangka kerja yang ada seperti Magneto atau apakah Anda menulis seluruh aplikasi dari awal? Jika nanti, membangun persyaratan lisensi tidak terlalu sulit. Anda hanya mengirimkan aplikasi dengan lisensi jangka pendek, yang berakhir 45-hari setelah Anda menagih dan kemudian memberikan yang permanen nanti.
Ini mengasumsikan bahwa Anda juga tidak membalik sumbernya. :)
sumber
Mengingat bahwa sistem dihosting secara internal, banyak solusi yang disebutkan di atas yang melibatkan komunikasi dengan server jauh mungkin tidak berfungsi.
Mengapa tidak memasukkan file lisensi di dalam proyek yang menyertakan tanggal kedaluwarsa. Setelah jam sistem melebihi tanggal kedaluwarsa, sistem berhenti berfungsi. Untuk mengamankan file, enkripsi konten untuk mencegah gangguan. Ketika pengguna membayar, atau memperbarui selama satu tahun tambahan, Anda mengirimi mereka file lisensi baru.
Perhatikan bahwa jika Anda menggunakan PHP, kode tersebut sudah tersedia bagi pengguna untuk diedit, jadi apa pun keamanan yang Anda lakukan, pengguna dapat dengan mudah masuk dan menghapusnya. Jika Anda menggunakan ASP.NET atau bahasa kompilasi lainnya, ini bukan masalah karena kode tidak dapat dimodifikasi.
sumber
(Pengungkapan - Saya bekerja untuk Agilis Software, penyedia sistem manajer lisensi ).
Solusi paling efektif adalah menggunakan aktivasi produk otomatis dengan sewa lisensi. Di luar kotak, ini memungkinkan Anda untuk:
sumber