Haruskah saya khawatir tentang 'pembajakan Javascript'?


11

Jika saya menulis aplikasi Javascript sisi klien (dengan sedikit interaksi server), bagaimana saya bisa mencegah orang menyalin file Javascript ke situs mereka sendiri? Haruskah saya, sama sekali?

Jawaban:


34

Haruskah kamu peduli? Tidak.

Mengapa? Karena tidak ada yang dapat Anda lakukan untuk itu.

Beberapa telah diduga menyarankan kebingungan. Ini berfungsi untuk Java dan. Net tetapi Python, Javascript dan Perl semuanya teks biasa sehingga sangat sedikit yang dapat Anda lakukan. Nilai di situs Anda tidak diragukan lagi adalah sisi server jadi jangan khawatir tentang Javascript.


1
Jika saya dapat mengetahui apa yang perlu saya ketahui dari Java yang dibongkar (diduga) dikaburkan, saya pikir saya dapat mengelola Javascript dan saya hampir tidak ahli dalam "peretasan" atau rekayasa balik. "Informasi merindukan kebebasan" (kutipan yang saya dengar di suatu tempat).

2
Javascript memiliki pertahanan bawaan: diikat ke kode serveride, yang tidak dapat diakses. Kebingungan adalah plasebo. Ini juga membuatnya lebih sulit untuk mendiagnosis laporan kesalahan yang Anda dapatkan. Jika seseorang akan merobek Anda (dan saya pikir Anda melebih-lebihkan nilai kode JS Anda), Anda tidak bisa berbuat banyak

1
Dan apa trik keren yang dimaksud?

2
Suara turun membuat saya tertawa. Javascript paling baik digunakan sebagai utilitas untuk meningkatkan situs Anda. Satu-satunya kode yang layak dilindungi adalah kode yang memaparkan informasi tentang cara kerja situs Anda dan perusahaan Anda. Tidak satu pun dari hal-hal ini yang termasuk dalam naskah klien!

1
@ Jim: Saya tidak tahu. Saya pikir hitungannya saat ini 17 upvotes, 8 downvotes dan karena berada di rep perwakilan harian rep saya dari jawaban ini adalah ... -16.

14

Yang terbaik yang dapat Anda lakukan adalah mengaburkan kode sehingga orang lain akan kesulitan memodifikasinya. Tentu saja, Anda menyimpan salinan aslinya.

Sebagai bonus, kode yang dikaburkan harus lebih kecil dan karenanya lebih cepat dimuat.


Itu disebut minimisasi Javascript, bukan?
Jonathan Leffler

4
minifikasi sebenarnya
Matt Briggs

9

Kenapa kamu khawatir? Saya melihat dua alasan bisa jadi: 1) Anda menulis perpustakaan JavaScript komersial. Solusi: Dapatkan rencana bisnis lain, lib JavaScript cenderung gratis. Mungkin Anda dapat menghasilkan uang di ceruk kecil perusahaan, tetapi mereka kemungkinan besar tidak akan menggunakan kode yang disalin secara ilegal.

2) Anda khawatir pesaing Anda akan menyalin situs Anda. Jika ya, Anda dapat yakin bahwa Anda akan selalu selangkah di depan mereka. Kemungkinan besar, mereka akan menulis kode mereka sendiri dan menyalin tampilan dan perilaku situs Anda dan tidak ada yang dapat menyelamatkan Anda dari itu kecuali untuk mendapatkan paten perangkat lunak bodoh, mis. Belanja satu klik amazon.

TKI, jangan khawatir. Letakkan pemberitahuan hak cipta yang meminta orang untuk memberi tahu Anda jika mereka menggunakan barang-barang Anda. Jika cukup banyak orang melakukannya, gunakan fakta bahwa Anda telah membuat perpustakaan yang bermanfaat untuk mendapatkan kredit di antara para geek, yang mungkin akan bermanfaat dalam jangka panjang.


Ini aplikasi web, bukan perpustakaan :). Terima kasih untuk # 2.

6

Tidak. Jangan mencoba dan "melindungi" bahasa skrip sisi klien. Kebingungan tidak berhasil. Minifying memiliki kegunaannya (tetapi anti-pembajakan bukan salah satunya)

Saya juga akan merekomendasikan untuk tidak memotong kode Anda kecuali Anda mendapatkan ribuan klik per hari, di mana beberapa kilobyte tambahan per permintaan akan menjadi perbedaan yang nyata (dan hanya melakukannya setelah Anda mengompres semua gambar yang Anda gunakan dengan benar, yang akan menghemat Anda jauh lebih dari beberapa KB, setup caching dengan benar dan sebagainya) ..

Bahkan jika Anda mengecilkan / mengaburkan Javascript, orang masih dapat dengan mudah menyalinnya ke situs mereka sendiri. Akan sedikit lebih sulit untuk memodifikasi, tetapi tergantung pada apa yang dilakukan skrip, itu mungkin tidak masalah. Misalnya, Editor WMD yang disebutkan orang disediakan, untuk penggunaan umum, diperkecil.

Kebingungan dan minifikasi bisa serupa, tetapi jika Anda benar-benar mengaburkan kode, pada dasarnya Anda harus menulis ulang segmen besar untuk membuatnya sulit dimengerti .. Ini membuat kode lebih rumit, dan jauh lebih sulit untuk ditangani (untuk Anda), jadi akan memperkenalkan bug .. Jika Javascript Anda menjadi buggy, itu akan mencegah pembajakan, karena tidak ada yang ingin menggunakan (atau mencuri) itu .. tapi, err, itu tidak baik.

Salah satu hal hebat tentang Javascript adalah siapa pun dapat mengklik kanan / melihat-sumber dan mempelajari Javascript dengan melihat langsung, kode yang berfungsi .. Jika Anda khawatir tentang orang yang melihat kode tersebut, dan menyalinnya, web / Javascript bukan t bahasa yang tepat ..

Saya akan merekomendasikan memberikan komentar di awal semua .jsfile dan <script>blok Anda, dengan informasi Anda (nama, situs web), dan semacam lisensi. Bergantung pada apa kodenya, mungkin meletakkan pemberitahuan yang mengatakan "Jika Anda menggunakan semua atau sebagian dari kode ini dalam suatu proyek, tolong beri tahu saya tentang itu!" mungkin jauh lebih efektif daripada "Jangan gunakan kode ini untuk tujuan lain, selamanya!"


4

Anda dapat mengaburkan (atau setidaknya mengecilkan) kode untuk mencegah hal ini (walaupun itu tidak dapat dihentikan bagi seseorang yang memiliki waktu. Misalnya, deobfusasi editor WMD dari StackOverflow (tapi ini karena alasan yang bagus!)).

Sungguh kode apa pun yang Anda letakkan frontend akan menjadi publik dan tersedia untuk dilihat / digunakan semua orang.


Editor WMD tidak dikaburkan, itu hanya diperkecil.

Meminimalkan JavaScript memiliki efek samping yang bagus untuk mengaburkan juga ... var va = fa (); juga dikaburkan.
Unkwntech

4

Mengapa khawatir sama sekali? Jika skrip Anda layak dicuri, Anda bisa menjadikannya open source dan mendapatkan bantuan dalam mengasahnya.


Selain itu Anda juga berpotensi mendapatkan kredit dan PR yang baik untuk mereka. Jika Anda tidak dapat membuat hal-hal ini bekerja untuk Anda dalam pengertian bisnis konvensional, lihat bagaimana Anda dapat membuatnya bekerja untuk Anda dengan cara lain.
Jon Hopkins

4

Anda tidak dapat benar-benar karena ini adalah bahasa yang ditafsirkan yang selalu disampaikan dalam bentuk kode sumber. Bahkan kebingungan tidak akan banyak membantu jika bajak laut cukup termotivasi.

(Contoh-Kasus: Editor WMD StackOverflow , yang dapat - secara tegas - dilihat sebagai Pembajakan, meskipun saya tahu bahwa Jeff dan Dana hanya memiliki niat baik)


4

Tidak. Kamu tidak perlu khawatir sama sekali.

Jika bisnis Anda bergantung pada kerahasiaan kode JavaScript Anda, ada beberapa masalah serius dengannya.

Kalau tidak, jangan repot-repot. Mungkin Anda harus mencoba meminimalkan kode JavaScript Anda untuk membuat halaman memuat lebih cepat.


3

Saya menggunakan GWT (Google Web Toolkit) untuk menulis aplikasi web, di mana kode semuanya ditulis dalam Java dan dapat didebug dan diuji dengan alat Java-sentris, tetapi dikonversi ke JavaScript untuk dirilis.

Ketika tidak dalam PRETTYatau DETAILEDmode, JavaScript yang dihasilkan oleh GWT sangat dioptimalkan dan dikaburkan, membuatnya sangat tidak praktis untuk melakukan reverse-engineer. (Obfuscator JavaScript tradisional akan memberikan sebagian dari manfaat ini - tetapi tidak di mana optimasi bergantung pada kemampuan GWT untuk melakukan pemangkasan cabang yang terperinci dan analisis jalur kode).

Yang mengatakan, secara umum, saya -1 pada kebingungan - itu berarti, misalnya, pelanggan yang sah kurang dapat membantu Anda memecahkan masalah mereka, bahkan ketika mereka kebetulan memiliki keterampilan pengembangan dan salinan FireBug. Anda adalah penulis asli - Anda tahu kode lebih baik daripada orang lain, dan itu memberi Anda keunggulan kompetitif atas seseorang yang mencoba menjalankan tiruan murah; lebih lanjut, jika pesaing semacam itu benar-benar menghasilkan uang nyata dari sesuatu yang mereka curi tanpa izin, itu membuat mereka kehilangan uang itu (atau, berpotensi, tiga kali lipat dari jumlah) diambil dalam gugatan; persaingan yang sah dan serius tidak akan mengikuti jalur itu, dan mengapa khawatir tentang jenis lainnya?


2

Kami menggunakan banyak kode Javascript (dan banyak sisi server) untuk aplikasi web kami, dan kami memilih untuk "mengaburkan" Javascripts akan menghapus spasi putih, penghentian baris dll. - ini tidak akan benar-benar melindungi kode Anda, tetapi membuatnya sangat sulit untuk dibaca & dimengerti, dan kemungkinan besar orang lain tidak akan repot karena upaya yang terlibat.

Namun, alasan kami melakukan ini bukan karena kami tidak ingin ada orang yang menyalin bagian dari kode kami, tetapi lebih untuk mencegah mitra / pelanggan kami kepada siapa kami mengirimkan kode dari melakukan modifikasi secara langsung dalam "file kami" (untuk menghindari masalah ketika pembaruan berikutnya diinstal) ...

Catatan: Kebingungan memiliki satu kelemahan yang harus Anda ketahui, meskipun: jika Anda perlu men-debug kode skrip itu, Anda sendiri tidak akan dapat bekerja dengan informasi yang dikaburkan, jadi ini akan selalu melibatkan menyalin file yang 'dapat dibaca' ke server terlebih dahulu.


2
Saya tidak akan memanggil format Javascript di editor atau menggunakan beberapa bentuk "printer cantik" untuk banyak upaya. Mengurangi hal-hal itu dapat berguna untuk mengurangi bandwidth (yaitu minify) tetapi itu saja.

Jika file Javascript besar, itu banyak usaha. Juga, "printer cantik" tidak berfungsi dengan baik (atau tidak bekerja sama sekali) pada jenis file "satu baris berisi semua kode".

1

Pergi dengan asumsi bahwa javascript yang cukup baik akan dijemput oleh orang lain, bagaimana kalau hanya berenang dengan arus dan memanfaatkannya?

Menampar lisensi di atasnya yang memungkinkan digunakan saat membutuhkan misalnya atribusi. Mungkin dengan klausa non-komersial seperti beberapa varian Creative Commons juga, jika Anda benar-benar harus.


1

Sebagian besar logika aplikasi Anda harus dari sisi server. Javascript seharusnya hanya menangani hal-hal GUI dan interaksi sederhana dengan server. Jika kode Javascript Anda mengandung cukup logika aplikasi yang Anda khawatirkan dicuri orang, maka Anda mungkin melakukan kesalahan.


0

Jika Anda memiliki rahasia dagang, Anda dapat memindahkan bagian kode yang paling sensitif ke ActionScript (Flash). Ini pada dasarnya bahasa yang sama dengan JavaScript, dan disimpan dalam bentuk tokenized.


0

Jika Anda khawatir tentang peretas tegar yang mencuri kode Anda, maaf, tidak ada yang dapat Anda lakukan. Tetapi ada cara untuk membuatnya tidak nyaman bagi pencuri biasa. Cara yang relatif mudah untuk melakukannya adalah memuat beberapa bagian menggunakan XMLHttpRequestdan eval()mereka; ini bisa disamarkan sebagai (atau termasuk dalam) sesuatu yang mendapatkan data JSON dan menggunakannya untuk mengisi halaman.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.