it-swarm-id.com

Plugin berbayar WordPress aman

Saya ingin membuat plug-in WordPress tetapi juga ingin memastikan bahwa plugin hanya dapat digunakan setelah diaktifkan dengan kunci seri yang harus unik untuk setiap domain.

Apa cara terbaik untuk melakukannya dengan asumsi:

  1. Saya harus memberikan kode sumber aktual kepada pengguna dan tidak dapat memiliki jenis keamanan VideoPress - yang hanya pembungkus JavaScript untuk konten aktual yang berasal dari server plugin.
  2. Saya ingin memastikan bahwa pengembang pemula hingga rata-rata PHP tidak akan dapat melakukan perumusan keamanan dengan mudah.
5
Adhip Gupta

Opsi 1 - Memproses beberapa data di sistem Anda

Saya tidak akan menempatkan semua pemrosesan plug-in di server Anda sendiri, tetapi pilih satu atau dua fungsi vital dan simpan di-host di sistem Anda. Kemudian memerlukan kunci API untuk setiap situs yang menggunakan plug-in sehingga mereka dapat berkomunikasi dengan server Anda.

Opsi 2 - Enkripsi data yang disimpan dan memerlukan kunci dekripsi yang di-host

Alternatif lain adalah pengaturan enkripsi dasar - ini sebenarnya adalah sistem yang saya telah mempermainkan untuk sementara waktu, saya hanya belum repot-repot menyebarkannya di mana saja. Kode itu sendiri (untuk tetap setia pada GPL) semuanya plaintext seperti yang Anda harapkan. Namun, semua data yang disimpan (nilai default, pengaturan plug-in, dll) dienkripsi sebelum disimpan ke database. Kuncinya di sini adalah bahwa plug-in pada sistem jarak jauh tidak memiliki kunci dekripsi - untuk mendekripsi data, ia harus memposting kunci API ke sistem Anda yang kemudian merespons dengan kunci dekripsi. Ini kemudian dapat disimpan dalam opsi sementara (sementara) untuk periode waktu tertentu sebelum dibilas - dengan cara itu Anda tidak memiliki situs yang mengenai server Anda setiap 2 detik selama lalu lintas padat.

Kelemahan dari pendekatan ini mungkin lebih besar daripada manfaatnya, (itulah sebabnya saya belum menggunakannya di mana pun). Pertama-tama, seorang programmer yang cerdas dapat menangkap kunci dekripsi dan kemudian mereka tidak membutuhkan server Anda lagi. Atau mereka bisa menghapus semua kait enkripsi/dekripsi dan dijalankan dalam plaintext. Ini adalah keuntungan dari open source untuk pengguna dan kerugian bagi pengembang yang ingin mendistribusikan sistem yang bebas tetapi dibatasi.

Kelemahan lainnya adalah ketergantungan pada server Anda. Menyimpan kunci dalam transient mengangkat sebagian beban dari server Anda ... tetapi jika situs Anda mati selama satu atau dua jam, maka setiap situs menggunakan plug-in Anda turun selama satu atau dua jam kecuali Anda berencana untuk semacam penonaktifan anggun. Juga, itu berarti Anda harus terus menjalankan server dan menjalankannya tanpa batas jika orang terus menggunakan sistem Anda.

Opsi 3 - Batasi fitur versi "gratis"

Opsi terakhir, dan yang sedang saya gunakan secara aktif, adalah untuk membagi fitur dan fungsi plug-in Anda. Inti dari sistem (UI, fitur dasar, dll) tersedia secara bebas tanpa registrasi. Untuk fitur yang lebih canggih, pengguna harus mendaftarkan salinannya, mendapatkan kunci aktivasi, lalu memasukkan kunci itu ke UI untuk menyelesaikan proses - plug-in kemudian memverifikasi dengan server Anda dan mengunduh "tambahan" premium tambahan ke sistem .

Kerugiannya di sini adalah bahwa setelah diunduh, semua kode sekarang berada di situs pengguna dan, di bawah GPL, mereka masih dapat mendistribusikan kembali paket lengkap. Keuntungannya adalah itu hanya tergantung pada sistem Anda sekali dan tidak memerlukan segala jenis dukungan unduhan/pemrosesan jangka panjang.


Apa pun cara Anda memutuskan untuk bergerak maju, Anda akan terpukul dengan mempertahankan semacam API eksternal di server Anda atau menyediakan sumber lengkap sistem untuk pengguna Anda. Jika Anda menyimpan beberapa fungsionalitas pada sistem Anda, Anda hampir harus menjamin 100% uptime agar layak. Jika Anda akan memberikan sumber lengkap, tidak ada cara (di bawah GPL) untuk mencegah orang lain mendistribusikan kembali sistem Anda.

4
EAMann

Anda tidak dapat menyembunyikan kode sumber dari pengguna WordPress dan Anda juga tidak diizinkan membatasi redistribusi plugin Anda karena implikasi lisensi.

Anda sedang membuat turunan WordPress dengan plugin Anda dan pengguna Anda memiliki hak untuk mendapatkan sumbernya dan secara bebas mendistribusikannya kembali (lihat empat kebebasan dalam perangkat lunak bebas ).

Dengan asumsi WordPress dilisensikan di bawah GPLv2 dan Anda telah mendapatkan pelanggan non-AS Anda harus berurusan dengan implikasi pelanggaran GPL yang mungkin Anda miliki dalam produk ("dilindungi") Anda.

Anda mencoba menerapkan penguncian vendor untuk pengguna Anda.

3
hakre

Satu-satunya cara untuk memiliki plugin terdistribusi yang memiliki lisensi aman yang tidak dapat diretas oleh programmer mana pun yang setengah jalan adalah dengan menjalankan fungsi utama plugin di server Anda sendiri, seperti Akismet. Pengguna harus mengirim permintaan ke server Anda yang berisi kunci lisensi mereka. Jika kunci memeriksa, jalankan kode sumber di pihak Anda dan kirim hasilnya kembali.

2
John P Bloch