Haruskah saya memasukkan metode selfdestruct ke aplikasi saya?

39

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.

  1. Secara etis apakah ini ide yang bagus? (Perlu diingat, itu jelas saya akan menghapusnya, ketika proyek telah 100% dan semuanya sudah dibayar)
  2. Pernahkah Anda meretas perangkat lunak Anda sendiri, karena masalah serupa dengan klien?
  3. Adakah saran untuk ide, kode, dan metode ini?
  4. 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.

Kalle H. Väravas
sumber
26
Upaya Anda akan lebih baik dihabiskan dengan melakukan uji tuntas pada klien Anda!
Steven A. Lowe
14
Membiarkan tidak hanya kerentanan keamanan yang diketahui tetapi disengaja dalam kode Anda tidak hanya tidak profesional tetapi harus membuat Anda terbuka terhadap bahaya hukum.
Kevin D
2
pintu belakang dan bom mungkin bukan bagian dari spesifikasi produk; tergantung pada tanggung jawab dan hukum kontrak di negara / negara Anda, ini mungkin merupakan pelanggaran kontrak
Steven A. Lowe
11
Saya melihat ini dan segera berpikir, Mungkin Saya Membutuhkan Nanti .
Mason Wheeler
3
@ KalleH.Väravas Freeland work! = Bekerja tanpa kontrak. Ini berarti "seseorang yang wiraswasta dan tidak berkomitmen untuk majikan jangka panjang". Melakukan pekerjaan tanpa kontrak hampir selalu dipandang sebagai ide yang sangat buruk, untuk alasan yang tepat Anda mengajukan pertanyaan ini (klien kabur tanpa membayar untuk pekerjaan itu)
thedaian

Jawaban:

38

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).

KeithS
sumber
3
Jawaban yang mengesankan! Terima kasih. Saya setuju dengan Anda 100%, kecuali bahwa pertanyaan ini ditujukan untuk pekerjaan freelance dalam pikiran, maaf saya mungkin tidak menjelaskannya dalam pertanyaan. Saya tidak akan pernah menggunakan metode seperti itu dengan pekerjaan kontrak, itu hanya akal sehat dan juga pertanyaannya adalah mengapa .. karena saya dilindungi secara hukum. Namun, saya bicarakan ketika Anda memiliki kontrak lisan dengan seorang pria .. yang menginginkan mobil .. dan Anda membuatnya untuknya. Lalu dia ingin melihatnya, saat Anda membuatnya .. dan pergi. Jadi, dalam mode pengembangan .. bukankah lebih mudah untuk mematikan-switch .. yang memotong kunci kontak ?!
Kalle H. Väravas
11
Inilah sebabnya mengapa Anda TIDAK PERNAH melakukan pekerjaan pengembangan untuk seseorang yang tidak mempekerjakan Anda, yang melibatkan waktu atau sumber daya yang signifikan, tanpa kontrak tertulis. Ini masih merupakan pekerjaan "lepas", karena Anda mewakili diri Anda sebagai kontraktor independen, tetapi kontrak tersebut memungkinkan Anda dan klien Anda untuk menutupi bagian belakang mereka. Ini menyatakan apa yang akan disediakan oleh kedua belah pihak untuk yang lain (bukan hanya produk dan uang, tetapi sumber daya seperti ruang kantor dan komputer), dan apa yang akan terjadi jika semua itu tidak terjadi seperti yang disepakati.
KeithS
Setuju, saya mendapat pelajaran. Secara teori memang benar, tetapi itu adalah salah satu kombinasi langka dari variabel yang berbeda. Teman seorang teman, yang menginginkannya murah (€ 1000), CMS pribadi saya dengan desain yang dibuat khusus. Saya pikir ini lebih jelas, bagaimana komunitas programmer merasakan hal ini. Terima kasih atas jawaban Anda, masih lebih terfokus pada kasus yang dikontrak, tetapi meninggalkan imajinasi untuk pekerjaan yang tidak dikontrak.
Kalle H. Väravas
Jawaban yang luar biasa.
Teekin
21

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.

Orang bodoh
sumber
ide yang jauh lebih baik.
Jenis Anonim
Memang, jawaban pertama yang tidak berdebat tentang "mengapa Anda tidak membuat kontrak" atau "menggunakan unlink()adalah ILEGAL". Saya sebenarnya sangat menyukai ide Anda, saya bisa memasak sesuatu di CRON.
Kalle H. Väravas
@Kalle: Tidak ada yang mengatakan "menggunakan unlinkitu 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.
Dave Sherohman
@Dave. Saya mengerti maksud Anda, tetapi jika Anda memikirkannya. Jika tidak ada kontrak, maka ketentuan dan apa yang tidak ditetapkan. Kemudian, program ini seperti apa adanya. Jadi, jika kill-switch ada di dalam kode ketika perangkat lunak dipindahkan / dicuri / dikirim .. kemudian menggunakan fungsi kill-switch (pada dasarnya unlik ()), adalah bagian dari tujuan perangkat lunak .. Saya telah berbicara dengan pengacara saya , dan dia memang menunjukkan, bahwa peretasan perangkat lunak akan ilegal (menggunakan filemanager untuk mengunggah skrip yang tidak terhubung misalnya). Tetapi jika kill-switch dimasukkan di dalam kode, sebagai bagian dari perangkat lunak, maka itu legal sepenuhnya.
Kalle H. Väravas
19

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.

Ian
sumber
Saya melihat. Saya mengerti maksud Anda. Sebagai catatan, kill-switch akan dimasukkan pada perangkat lunak nonkomersial, dan sebagian besar hanya di dalam server saya sendiri atau setidaknya dalam mode pengembangan saja. Beberapa klien menuntut, bahwa pengembangan akan dilakukan di dalam server mereka sendiri dan itu membuat saya dalam situasi yang sangat sangat rentan. Saat ini saya memiliki semua file yang dikreditkan, desain diberi watermark, nama saya di MANA SAJA - Saya merasa cukup percaya diri, bahwa saya akan memenangkan gugatan .. Saya pikir memiliki kill-switch di server saya sendiri akan tetap merupakan ide yang baik, jika seseorang mencuri mereka.
Kalle H. Väravas
17

Ini sepertinya ide yang sangat buruk yang berpotensi membuat Anda masuk penjara.

  1. Itu tidak etis. Perilaku buruk klien Anda tidak membuat Anda tepat untuk meretas sistem mereka.
  2. Itu ilegal. Ini telah terjadi sebelumnya , dengan hasil buruk bagi para pihak yang bersalah.
  3. Tidak ada gunanya. Apa yang mungkin Anda lakukan dengan pintu belakang ini yang tidak akan membuat Anda dalam masalah? Apakah Anda akan memeras klien?
  4. Bodoh. Bahkan jika Anda bisa melakukan ini tanpa ketahuan, risiko potensial jauh lebih besar daripada kemungkinan keuntungan apa pun.
Ken Liu
sumber
1
Maaf, tetapi jawaban Anda kurang MENGAPA bagian. Kenapa itu ide yang buruk dan berdasarkan apa aku bisa masuk penjara? Bisakah Anda jelaskan sedikit lebih jauh?
Kalle H. Väravas
3
Sebanyak saya setuju dengan sentimen, @Kalle benar. Harap cantumkan alasan. -1
Steven Evers
3
Apakah Anda mengatakan bahwa kill-switch itu ilegal? Jika kontrak menetapkan bahwa layanan akan ditangguhkan karena keadaan tertentu, itu mungkin tidak ilegal.
FrustratedWithFormsDesigner
Itu tergantung pada standar hukum di mana Anda melakukan bisnis, tetapi secara umum sistem hukum akan sangat menghukum upaya untuk mengambil masalah ke tangan Anda sendiri. Mereka benar-benar ingin Anda melalui sistem pengadilan. Dalam beberapa yurisdiksi hanya dengan mengakses sistem komputer tanpa izin adalah tindak pidana yang dapat dihukum pada waktu penjara. Anda mungkin berpendapat bahwa itu adalah perangkat lunak Anda, tetapi pengadilan akan mengatakan itu bagi mereka untuk memutuskan, bukan Anda.
Charles E. Grant
Metode kill-switch datang dalam pekerjaan freelance dalam pikiran. Maaf, saya lupa menyebutkan itu dalam pertanyaan saya. Saya tidak akan pernah menggunakan metode seperti itu pada pekerjaan kontrak. Masalah hukum di sini (Estonia) masih dalam tahap kecil dalam hal hukum hak cipta. Kami memiliki undang-undang hak cipta yang serupa, tetapi tidak sama seperti Swedia dan Finlandia. Secara pribadi saya belum pernah memiliki masalah dengan klien sebelumnya .. beberapa menunda pembayaran dll. Tetapi seorang penjahat yang sebenarnya, yang mencuri perangkat lunak Anda - itu baru dalam buku saya.
Kalle H. Väravas
12

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.

psr
sumber
Ya, tombol bunuh sebagian besar ditargetkan untuk pekerjaan lepas. Dengan kontrak itu jauh lebih mudah. Saat ini kasusnya pada dasarnya seperti ini: Perangkat lunak saya, tanpa sepengetahuan saya dipindahkan dari server saya dan hanya itu. Kemudian lagi, ini kasus pencurian yang sangat jelas - jadi secara hukum saya tidak khawatir. Jadi kill-switch sebagian besar berada di server saya sendiri, ketika perangkat lunak saya akan dicuri. Padahal, aku mulai merasa itu masih ide yang buruk. Terima kasih atas jawaban Anda, saya akan bertemu dengan pengacara saya dalam beberapa hari.
Kalle H. Väravas
5

Secara etis apakah ini ide yang bagus?

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.

Pernahkah Anda meretas perangkat lunak Anda sendiri, karena masalah serupa dengan klien?

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.

Adakah saran untuk ide, kode, dan metode ini?

Jangan lakukan itu.

Apa yang mungkin menjadi kelemahan atau akibat dari script self -estruct?

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.

Thomas Owens
sumber
Terima kasih atas jawaban Anda. Saya mengedit pertanyaan saya menjadi sangat jelas, bahwa ini pada dasarnya akan 100% disembunyikan dari klien .. Karena sebagian besar akan berada di dalam server saya sendiri dan hanya dalam mode pengembangan. Jadi ketika seseorang mencuri perangkat lunak saya, saya bisa membunuhnya. Padahal, mulai lebih jelas, bahwa saya harus menggunakan hukum dan bukan "kekuatan".
Kalle H. Väravas
2
@ KalleH.Väravas Tidak masalah di mana tempatnya, tetapi kenyataan bahwa Anda menulisnya sebagai permulaan. Seseorang bahkan dapat membuat argumen bahwa menempatkannya dalam lingkungan pengembangan dan bukan lingkungan produksi bahkan lebih buruk, karena kedua lingkungan tersebut tidak lagi identik dan hanya menjadi variabel lain untuk ditangani selama pengembangan dan penyebaran.
Thomas Owens
3

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.

Oliver
sumber
2

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.

  1. 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.

  2. 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.

  3. 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).

  4. 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 dariunpaid_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).

dr jimbob
sumber
Menempelnya ke klien yang mengerikan di masa depan? Itu terdengar sesuatu yang tidak saya tanyakan atau bahkan sebutkan. Dan jika saya tidak dibayar, namun dia akan kehilangan perangkat lunaknya, lalu bagaimana poin pertama Anda valid? Juga ada dua poin dalam pertanyaan saya, apakah etis / legal memiliki kill-switch di dalam server saya sendiri dan / atau di server klien. Anda tidak menyebutkan yang Anda maksud. Cukup yakin, bahwa saya dapat mematikan switch di server saya sendiri. Jadi ketika seseorang menyalinnya, saya dapat menghapusnya dari jauh. Dan saya pikir klien yang baik tidak relevan, karena kill-switch tidak termasuk dalam perangkat lunak. 1 baris.
Kalle H. Väravas
2

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.

segera
sumber
-1 Maaf, tapi jawaban Anda di luar topik. Nasihat bagus, sedikit ofensif tapi tetap saja. Saya tidak merekomendasikan untuk membuat penilaian karena Anda tidak tahu cerita lengkapnya atau Anda tahu, bagaimana saya biasanya membuat bisnis.
Kalle H. Väravas
2

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.

nick
sumber
Saya mulai benar-benar menyukai ide uji coba-perangkat lunak. Namun, bagian kedua rapuh. Pada dasarnya, jika lisensi-percobaan atau bahkan kill-switch akan menjadi bagian dari perangkat lunak, maka itu legal. Bergantung pada pekerjaan yang dikontrak atau tidak, itu harus dinyatakan dalam kontrak.
Kalle H. Väravas
2

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 ...

sangat bodoh
sumber
Saya suka jawaban Anda, ini membahas poin saya jauh lebih baik daripada jawaban lainnya. Saya memeriksa dengan pengacara saya dan dia berkata, bahwa setelah masuk ke dalam panel admin dan mengunggah skrip tautan melalui filemanager, dianggap peretasan - ilegal. Namun, jika ada fungsi sebenarnya pada perangkat lunak .. maka bagian dari perangkat lunak dan memiliki tujuan sendiri. Ini jelas harus dicakup dalam kontrak, meskipun pertanyaan ini adalah tentang pekerjaan non-kontrak. Terima kasih atas jawaban Anda :)
Kalle H. Väravas
0

Pada catatan praktis, pasti klien akan memeriksa log mereka, menemukan permintaan kill, mengembalikan kode dari cadangan, menghapus switch kill dan menggunakan kembali.

jah
sumber
Benar, namun ini tergantung pada klien, perangkat lunak, server. Dalam kasus saya, klien hampir tidak bisa mengubah akses ftp. Tetapi memeriksa log tidak mungkin. Juga, server itu tidak mendukung pencatatan seperti itu .. tidak juga CMS saya yang sederhana ..
Kalle H. Väravas
-2

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.)

David Schwartz
sumber
Saya tidak setuju. Ini sebenarnya ide yang sangat bagus. Jika Anda akan membaca detailnya dengan cermat, maka Anda akan mengerti bahwa saya sedang berbicara tentang pekerjaan non-kontrak .. di mana dalam contoh kasus saya, klien dipertanyakan. Reputasinya sebagai preman yang sudah dikenal vs. upaya saya untuk melindungi diri. Saya tidak berpikir ini akan mempengaruhi reputasi saya secara negatif. Skenario Anda terdengar seperti pekerjaan yang dikontrak .. dalam hal ini saya memiliki kontrak, tidak perlu untuk mematikan saklar. Namun, jika tidak ada kontrak maka mereka tidak bisa mendapatkan salinan kode juga ..
Kalle H. Väravas
Jika tidak ada kontrak, maka Anda belum mengontrak hak untuk mengaktifkan sakelar mematikan pada perangkat keras mereka, bukan? Ide buruk.
David Schwartz
Jika tidak ada kontrak, maka tidak ada ketentuan apa yang merupakan bagian dari perangkat lunak. Jika kill-switch adalah bagian dari perangkat lunak, maka ya .. dari sudut pandang programmer: apakah etis? Namun, itu legal. Karena tujuan kill-switches sebagai bagian dari skrip, harus diaktifkan dari jarak jauh dengan satu-satunya tujuan menghapus SEMUANYA. Ini legal, jadi mengapa itu ide yang buruk?
Kalle H. Väravas
1
Jadi Anda mengatakan dengan sengaja menyebabkan komputer orang lain berhenti beroperasi dengan cara yang mereka inginkan untuk bertindak tanpa izin mereka (ketika Anda tahu bahwa jika Anda secara spesifik bertanya kepada mereka apakah Anda bisa melakukan ini, mereka akan mengatakan "tidak") adalah sama secara hukum sebagai melakukan operasi yang tidak berbahaya di mana Anda tidak memiliki alasan untuk berpikir bahwa pemilik sistem akan keberatan jika Anda melakukannya? Saya ingin mendengar Anda menyampaikannya kepada juri. (Membidik dan menembakkan senjata ke seseorang seperti menyalakan lampu, kan?)
David Schwartz
1
Jawaban yang Anda dapatkan hanya sebaik pertanyaan yang Anda ajukan. Misalnya, apakah Anda bertanya kepada mereka tentang kasus yang saya bahas dalam jawaban saya? (Seorang mantan karyawan mencari tahu cara mengaktifkan sakelar pembunuh.)
David Schwartz