Baru-baru ini saya memiliki pengalaman negatif, di mana klien ditebus dari tagihan, tetapi perantara saya sudah mengunggah perangkat lunak dan desain kami ke server klien. Klien ternyata adalah penjahat yang dikenal, dan tentu saja ia mengubah semua kemungkinan kata sandi server.
Namun, saya masih dapat mengakses panel admin CMS. Sayangnya ternyata, bahwa perangkat lunak saya sangat aman .. Mencoba untuk injeksi SQL, mengunggah gambar-upload dll masalahnya .. Saya hanya berpikir sekarang, bahwa mungkin harus ada beberapa metode backend selfdestruct. Jadi, jika terjadi kasus serupa, saya memiliki opsi untuk mematikan perangkat lunak.
Ide saya sendiri adalah menyembunyikan beberapa fungsi di file inti. Encode dengan base64, jadi tidak akan terlihat jelas. Jadi sesuatu seperti ini:
eval(base64_decode('ZWNobyAnSGVsbG8gd29ybGQhJzs=')); // echo 'Hello world!';
Dan pada dasarnya membuat skrip kecil, yang mengambil semua file perangkat lunak, chmod memastikannya dan kemudian menghapusnya.
Versi CMS saya yang lebih baru, semuanya memiliki filemanager yang bisa saya gunakan untuk peretasan yang lebih mudah . Tetapi bagaimana jika akses ke panel admin terbatas.
Untuk menjadi sangat jelas , ini dimaksudkan hanya untuk perangkat lunak tahap pengembangan, di server pribadi saya atau server klien (bagian terakhir yang dipertanyakan secara etis.) Jadi jika klien saya harus mencuri perangkat lunak saya .. Ini tidak akan dimasukkan dalam iklan -perangkat lunak.
Dan untuk lebih jelasnya , kita berbicara tentang pekerjaan lepas yang langka itu . Saya pikir ini cukup logis, bahwa pekerjaan kontrak tidak memerlukan metode seperti itu. Jadi kita berbicara tentang klien-klien yang sulit, hanya dalam mode pengembangan - ketika proyek siap, maka jelas ini akan menjadi pintu belakang yang sangat tidak etis untuk ada di dalam perangkat lunak Anda.
- Secara etis apakah ini ide yang bagus? (Perlu diingat, itu jelas saya akan menghapusnya, ketika proyek telah 100% dan semuanya sudah dibayar)
- Pernahkah Anda meretas perangkat lunak Anda sendiri, karena masalah serupa dengan klien?
- Adakah saran untuk ide, kode, dan metode ini?
- Apa yang mungkin menjadi kelemahan atau akibat dari script self -estruct?
Kesimpulan saya tentang ini
Agak menyedihkan, bahwa semua jawaban ditargetkan pada kasus yang dikontrak. Benar-benar salah saya, bahwa saya tidak membuatnya lebih jelas dalam pertanyaan saya .. hanya berpikir, bahwa itu cukup jelas, bahwa tidak ada gunanya mematikan saklar .. ketika Anda dilindungi oleh kontrak.
Namun, jika Anda melakukan pekerjaan kontrak .. maka ini harus dinyatakan dalam kontrak - ini membuatnya legal, bahkan di dalam server klien sendiri. Namun, memiliki switch-kill di dalam server pribadi saya benar-benar bisnis yang bukan siapa-siapa (ini yang ingin saya ketahui.)
Saya memutuskan untuk membuat skrip kill-switch untuk CMS saya. Terutama, karena sepertinya tantangan yang menarik. Tetapi juga, bahwa saya dapat menggunakan ini untuk pekerjaan non-kontrak saya di mana klien adalah teman dari teman seorang teman .. Saya mungkin tidak akan menggunakan ini di server klien, tapi .. untuk kasus-kasus, di mana klien atau beberapa perantara memiliki akses ke server saya .. Dan perangkat lunak saya dicuri, atau "dipindahkan tanpa sepengetahuan saya", maka saya tidak dibayar dan mereka memotong akses ke perangkat lunak.
Saya telah membaca banyak topik di sini, di mana mereka merekomendasikan untuk mengirim peringatan dan kemudian mencatat halaman. Yah, saya melihat masalah di dalamnya, seperti ketika saya berurusan dengan seseorang .. yang hanya akan menyalinnya ke tempat lain (mungkin merek-ulang dan menjualnya) dan memberi tahu saya, bahwa itu telah dihapus. Dan juga, saya tidak akan "mematikan situs", tetapi menghapusnya. Padahal, saya kira masih ilegal untuk mengakses server klien saya dan menghapusnya. Atau setidaknya, akses melalui backend dan bukan dari FTP. Untuk ini, saya berterima kasih kepada Anda semua, yang menjawab.
sumber
Jawaban:
Saya bukan pengacara. Sepertinya Anda sudah memilikinya untuk menggugat klien Anda; sementara Anda memilikinya pada punggawa saya akan merekomendasikan mendapatkan saran mereka tentang ini.
Ada beberapa pertanyaan lain di situs ini yang berhubungan dengan "kill switches" dan cara-cara lain untuk menonaktifkan perangkat lunak yang pengembangnya belum menerima kompensasi. Biasanya dianggap ide yang buruk untuk hanya membangun satu untuk perangkat lunak "turnkey" (di mana Anda akan mengembangkannya dan kemudian mentransfer hak penuh kepada klien), tanpa kontrak yang telah menetapkan kemungkinan ini.
Pertama, jika kontrak Anda tidak secara spesifik menyatakan bahwa Anda dapat menonaktifkan perangkat lunak untuk non-pembayaran, atau bahwa klien tidak memiliki hak apa pun atas perangkat lunak sampai pembayaran diterima secara penuh, maka Anda tidak dapat membalik "switch bunuh" apa pun tanpa melanggar kontrak. Tidak ada kata-kata yang bertentangan, "kepemilikan adalah sepersepuluh dari hukum", jadi itu perangkat lunaknya begitu ia diberikan kepemilikan, dan untuk menghancurkannya akan mirip dengan meramalkan sebuah gedung kantor baru yang akan Anda bangun untuknya jika ia tidak melakukannya. dapat membayarnya.
Poin kedua mengikuti; kontrak apa pun yang Anda tawarkan kepada klien mana pun harus memiliki klausa yang menyatakan: "Transfer kekayaan intelektual atas kepuasan kontrak" . Itu berarti bahwa bahkan jika Anda telah memberinya salinan perangkat lunak untuk digunakan, sampai dia membayar Anda sepenuhnya, dia tidak memilikinya. Ini AKAN memberi Anda hak untuk menonaktifkan atau setiap salinan perangkat lunaknya dengan alasan apa pun sampai pembayaran penuh diterima, karena itu masih milik Anda dan Anda dapat melakukan apa pun yang Anda mau. Sekarang, ia melanggar kontrak, dan Anda belum melakukannya, jadi kasusnya JAUH lebih mudah bagi pengacara Anda untuk hadir, dan sementara itu klien Anda tidak mendapatkan manfaat apa pun dari barang-barang haramnya.
Analogi dengan kontraktor bangunan berlaku: begitu sebuah bangunan yang sedang dibangun dapat diamankan terhadap entri yang melanggar hukum, itu adalah, dan kontraktor umumnya akan menyimpan semua salinan semua kunci ke tempat itu sampai pekerjaan selesai dan ditandatangani, dan pembayaran diterima secara penuh. Bahkan setelah kunci diserahkan, jika pembayaran jatuh ia dapat melampirkan hak gadai pada properti dan secara ekstrem memilikinya diambil kembali. Hal yang sama berlaku di sini; Anda dapat memberi klien kunci untuk masuk ke perangkat lunak, tetapi Anda memegang kunci "master", dan dia tidak mendapatkan akses administratif sampai Anda dibayar penuh. Jika dia bisa masuk sekarang, dan tidak membayar Anda, Anda bisa "mengganti kunci" dan menguncinya dari perangkat lunak.
Namun, Anda telah memberi klien Anda kunci "master" untuk perangkat lunak, dan dia pergi dan mengubah semua kunci jadi sekarang ANDA tidak bisa masuk. Itu bukan cara yang seharusnya bekerja. Anda masih dapat mengklaim kerusakan, tetapi sementara itu klien Anda yang bengkok dapat menggunakan perangkat lunak, menyalinnya di tempat lain (itu adalah hal besar yang tidak dapat terjadi pada kontraktor; jika ia mengambil kembali gedungnya, ia tidak perlu khawatir bahwa Anda Sudah membuat salinan gratis tepat pada lot lain), dll. Pada dasarnya, satu-satunya obat Anda adalah untuk menegakkan pembayaran secara penuh, karena Anda tidak dapat menjamin bahwa Anda telah mengklaim kembali semua salinan perangkat lunak. Anda mungkin tidak akan senang mendapatkan kembali perangkat lunak Anda bahkan jika Anda dapat menjamin dia tidak memiliki salinan lebih lanjut; sepertinya pekerjaan khusus yang tidak bisa Anda balikkan dan jual kepada orang lain.
Pahami bahwa terlepas dari hak Anda terhadap perangkat lunak, datanya adalah miliknya. Anda tidak bisa menyentuhnya. Anda dapat menghentikan aksesnya ke perangkat lunak yang Anda buat, tetapi jika Anda menghancurkan datanya, itu seperti membakar barang-barangnya setelah repoing bangunan yang Anda buat itu yang tidak ia bayar. Anda tidak punya hak apa pun terhadap data itu, dan harus membiarkannya tetap di komputernya, atau jika data itu tidak dapat diakses dengan cara yang wajar tanpa perangkat lunak Anda, Anda harus menghapusnya dari belitan dengan perangkat lunak Anda dan memberikannya kepada dia dalam format yang dapat digunakan (seperti database yang dapat dikonsumsi manusia, atau salinan cetak atau elektronik).
sumber
Dalam konsep kamu benar. Eksekusi Anda semua salah.
Anda harus memberinya lisensi uji coba yang kedaluwarsa. Setelah pembayaran penuh berikan dia lisensi "selamanya" Final. Semua dimuka dan jujur.
sumber
unlink()
adalah ILEGAL". Saya sebenarnya sangat menyukai ide Anda, saya bisa memasak sesuatu di CRON.unlink
itu ilegal." Apa yang orang telah mencoba untuk menyeberang adalah bahwa AS, setidaknya, memiliki hukum yang sangat luas pada "penggunaan yang tidak sah dari sistem komputer"; oleh surat hukum, merupakan kejahatan bagi kebanyakan dari kita untuk mengirim jawaban di sini menggunakan komputer kerja. Kecuali Anda memiliki kontrak yang memberi Anda hak untuk melakukannya, menonaktifkan perangkat lunak dari jarak jauh yang dijalankan pada komputer yang tidak Anda miliki hampir pasti akan bertentangan dengan hukum ini. Apakah perangkat lunak yang Anda nonaktifkan dicuri atau tidak, kemungkinan besar tidak akan relevan ketika tuduhan itu menggunakan sistem yang dijalankan tanpa izin.Tidak. Jika klien Anda tahu Anda akan digantung. Sama sekali tidak aman. Seseorang, beberapa orang akan mencari tahu cara memicunya dan tiba-tiba Anda memiliki tugas untuk menghubungi semua klien Anda untuk memberi tahu mereka tentang hal itu dan mengapa mereka harus melakukan perbaikan darurat.
Jika Anda meretasnya, Anda juga membuka diri terhadap proses pidana. Saya berasumsi Anda memiliki bukti bahwa Anda masih memiliki situs tersebut? Anda berhak mengaksesnya? Biaya untuk bisnisnya bisa "astronomi"
Ada alternatif yang bisa diterima. Letakkan tanda air di situs, sehingga setiap halaman menampilkan pesan. Dengan pembayaran Anda dapat menghapus tanda air.
sumber
Ini sepertinya ide yang sangat buruk yang berpotensi membuat Anda masuk penjara.
sumber
Tolong jangan tanya programmer, tanyakan pada pengacara. Saya akan membayangkan setidaknya Anda ingin memasukkan klausul dalam kontrak Anda yang mengatakan Anda memiliki hak untuk melakukan apa yang pertanyaan Anda renungkan lakukan. (Bukankah klausul "kerusakan yang tidak dapat diperbaiki" dari beberapa kontrak memungkinkan Anda mendapatkan perintah pengadilan untuk segera mematikan perangkat lunak sampai pengadilan memiliki kesempatan untuk menyelesaikannya?) Saya pikir perintah pengadilan akan jauh lebih aman bagi Anda daripada sebuah kode bom (yang dapat dianggap kriminal, jika pengadilan menemukan Anda tidak memiliki perangkat lunak itu bisa menjadi perusakan properti, di AS itu mungkin jatuh di bawah bagian enkripsi digital melanggar Digital Millennium Act, dll. Saya bisa bayangkan memenangkan ganti rugi di pengadilan sipil dan masih dihukum di pengadilan pidana).
Peraturannya akan bervariasi tergantung di mana Anda dan klien Anda tinggal dan beroperasi, jadi saya benar-benar berpikir Anda ingin pengacara.
sumber
Benar-benar tidak. Tidak hanya membuat Anda terlihat tidak profesional untuk klien yang jujur dan terhormat, tetapi saya merasa itu juga merusak profesi secara keseluruhan. Insinyur perangkat lunak memang memiliki tanggung jawab kepada klien atau atasan mereka, termasuk memberikan perangkat lunak yang berkualitas tinggi. Jika ada perselisihan tentang pembayaran atau kontrak, ada saluran yang sesuai. Mengurangi kualitas perangkat lunak Anda bukan saluran yang tepat.
Tidak pernah, meskipun saya belum pernah melakukan pekerjaan kontrak atau freelance. Saya selalu menjadi karyawan organisasi yang lebih besar (yang, dalam beberapa kasus, bekerja di bawah kontrak). Bagi saya, pemikiran itu tidak terpikirkan. Saya lebih suka memberikan perangkat lunak yang saya bangga memiliki nama saya dikaitkan dan ditipu oleh sebagian kecil pelanggan daripada mengurangi kualitas perangkat lunak saya serta tanggung jawab etis saya kepada para pengguna sistem.
Jangan lakukan itu.
Selain masalah etika yang jelas, saya khawatir tentang masalah hukum. Saya tidak yakin apakah menyabot pekerjaan Anda adalah sah, dan bahkan jika itu, menggunakan eksploitasi seperti itu mungkin tidak.
sumber
Cukup laksanakan modul lisensi dengan lisensi terbatas waktu yang akan menonaktifkan perangkat lunak pada saat kedaluwarsa. Ini adalah praktik yang terkenal di industri perangkat lunak dan klien Anda tidak boleh keberatan, karena Anda akan menghapus batasan setelahnya.
Ini mungkin juga berguna, ketika Anda ingin membatasi fitur dan menawarkan versi berbeda dari produk Anda.
Bunuh switch hanya memiliki terlalu banyak risiko dan tidak sepadan.
sumber
Fitur penghancuran diri rahasia adalah ide yang menghebohkan . Ya, Anda akan menjadi pintar dan mungkin memiliki kesempatan untuk menempelkannya ke klien yang buruk di masa depan, tetapi caranya lebih banyak masalah daripada nilainya.
Anda masih tidak akan dibayar untuk pekerjaan yang telah Anda lakukan. Ya orang lain tidak akan menggunakan kode Anda; tetapi Anda masih akan mengalami kekurangan pembayaran. Anda pikir beberapa penjahat akan memutuskan untuk membayar orang yang sudah pernah mengunjungi situs mereka sekali saja? Mereka akan menemukan orang bodoh baru untuk membuat situs mereka secara gratis.
Memanfaatkan urutan penghancuran diri, membuat Anda bertanggung jawab atas masalah hukum Anda sendiri. Bergantung pada yurisdiksi, Anda dapat dengan mudah dilihat sebagai peretasan / penghancuran data mereka (ketika mereka akan membayar dan memiliki banyak keadaan yang meringankan mengapa mereka tidak membayar lebih awal). Sekalipun Anda tidak dinyatakan bersalah / berhasil digugat, Anda masih dapat memungut biaya hukum yang besar dan memiliki lebih banyak masalah daripada nilainya.
Bagaimana jika beberapa klien membayar yang baik meramban kode Anda nanti (atau memiliki teman CS yang baru saja merambannya untuk melakukan sedikit perubahan), melihat fungsi dengan bagian base64 yang aneh, seperti apa ini, mencoba menjalankannya, dan secara tidak sengaja menghapus aplikasi web (dan apakah itu saat Anda berlibur sehingga perlu waktu untuk memperbaikinya)? Atau memposting banyak ulasan publik tentang Anda di mana-mana yang menyatakan Anda tidak etis dan meninggalkan ruang belakang dalam pekerjaan Anda? Tentu Anda dapat menghapusnya dari produk jadi setelah mereka membayar, tetapi dengan VCS mereka dapat menelusuri sumber yang lebih tua atau tidak ingin Anda berada di server mereka setelah mereka membayar (dan itu akan menjadi percakapan yang canggung; ya saya perlu akun lagi, ya saya perlu akun lagi, karena saya berlindung dapat menghapus backdoor rahasia self-destruct).
Bagaimana jika penjahat membuat cadangan data mereka? Anda menghapus server web mereka dengan backdoor rahasia, situs ini offline selama satu atau dua hari sementara mereka (atau teman) menemukan fungsi backdoor fungsi menyinggung dan kembali online.
Di masa depan, suruh orang menandatangani kontrak sederhana, membayar Anda secara bertahap, dan jangan biarkan kode meninggalkan server pengembangan dan komputer yang hanya Anda kendalikan hingga Anda dibayar. (Jika mereka membutuhkannya untuk hidup sebelum semua pekerjaan selesai; pastikan mereka telah dibayar secara kasar untuk sebagian kecil dari kode yang menjadi hidup). Jika mereka ingin melihat pekerjaan tersebut sedang dalam pengembangan, minta mereka memberi Anda beberapa alamat IP yang akan Anda buka firewall Anda untuk server pengembangan Anda (dan mungkin dengan CNAME yang pandai untuk efek dari
unpaid_work_in_development.example.com
). Tidak memberikan jaminan uptime dari server dev Anda, dan jika Anda mendapatkan lalu lintas jauh lebih banyak dari yang seharusnya (misalnya, Anda menemukan mereka mengarahkan banyak orang ke situs Anda) tutup saja firewall sampai mereka membayar. Jika mereka perlu berkontribusi konten ke server web Anda, membuat mereka baik mengirimi Anda email dengan saran konten, atau membuat folder bersama dropbox untuk mereka yang hanya memiliki izin untuk menulis ke subset kecil file (di bawah kontrol VCS di luar dropbox) bahwa mereka dapat berkontribusi secara berarti (misalnya, templat html).sumber
Anda telah mengajukan pertanyaan yang salah. Hal yang harus dikerjakan dan ditingkatkan adalah bukan menambahkan semacam saklar bunuh jarak jauh (menambahkan kerentanan yang dapat Anda atau orang lain gunakan), tetapi untuk memperbaiki masalah Anda yang sebenarnya, yang merupakan cara yang buruk untuk mengatur pembayaran dan pengiriman. Sepertinya Anda membutuhkan sistem escrow yang lebih baik (atau apa pun konsep yang disebut tempat tinggal Anda).
Jangan buang waktu Anda untuk mematikan saklar, cari tahu di mana Anda mengacau di bagian kesepakatan bisnis.
sumber
Saya pikir saya akan merancang semacam mekanisme lisensi. Ini dapat didasarkan pada sejumlah ide komersial atau diseduh di rumah dan dapat menyebabkan perangkat lunak berhenti bekerja setelah lisensi berakhir. Pada titik sistem diterima oleh klien dan mereka telah membayar Anda dapat memberikan lisensi penuh yang tidak kedaluwarsa.
Pendekatan ini juga memerlukan persetujuan dari pengacara di wilayah Anda tetapi memiliki keuntungan bahwa Anda tidak perlu menonaktifkan perangkat lunak dari jauh dan Anda dapat menetapkan bahwa ini adalah bagian dari sistem sebelumnya. Namun tampaknya sangat menyedihkan bagi saya bahwa Anda berurusan dengan orang-orang yang menolak untuk membayar.
sumber
Bukankah ini disebut DRM? Selama Anda menghapus "bom" setelah menerima pembayaran, saya tidak melihat masalah hukum dengan itu. Pastikan Anda memiliki tambalan yang tersedia untuk menutupi pantat Anda dan tunjukkan bahwa Anda tidak memiliki niat jahat.
Ini mengingatkan saya pada ketentuan 'pil racun' di beberapa artikel perusahaan yang diaktifkan jika terjadi pengambilalihan yang tidak bersahabat.
Intinya, mentalitas yang diungkapkan oleh beberapa poster lain di sini mengingatkan saya mengapa beberapa programmer terinjak sepanjang waktu. Jika lebih banyak orang memasukkan bom seperti itu ke dalam kode mereka, saya pikir para programmer akan dibayar lebih cepat ... Saya sama sekali tidak akan memiliki masalah jika ini adalah norma. Orang suka mencuri kerja keras orang lain. Periode. Dan jika Apple, et al. bisa mengeluarkan DRM dari barang-barang mereka, maka saya pikir programmer lepas juga bisa ...
sumber
Pada catatan praktis, pasti klien akan memeriksa log mereka, menemukan permintaan kill, mengembalikan kode dari cadangan, menghapus switch kill dan menggunakan kembali.
sumber
Rincian pertanyaan Anda memperjelas bahwa ini akan menjadi ide yang benar-benar mengerikan. Klien pertama yang menemukan saklar mematikan (mungkin setelah Anda menggunakannya dan mereka pulih dari cadangan) akan menerbitkan saklar mematikan dan fakta bahwa Anda telah memasukkannya dalam kode yang Anda kirim kepada mereka. Reputasi Anda akan hancur total.
Dan sebelum Anda berkata, "Yah, mereka akan menjadi jalan buntu, bagaimana mereka akan menghancurkan reputasi saya?" Pertimbangkan skenario seperti ini: Pelanggan memiliki reputasi yang baik, tetapi salah satu karyawan mereka mengambil salinan kode tersebut. Mereka memecat karyawan itu, dia melihat kode itu, mencari tahu tombol mematikannya, dan menggunakannya. Tebak siapa yang disalahkan? (Petunjuk: Ini kamu.)
sumber