Saya sedang merencanakan permainan yang dibangun menggunakan JavaScript dan HTML5.
Saya mengalami kesulitan memahami bagaimana Anda dapat mencegah seseorang dari hanya menyalin JavaScript dari server web dan baik membuat game sendiri dengan itu (bukan masalah terbesar saya), atau mengganti fungsi JavaScript mereka sendiri dan menghancurkan harapan untuk klien yang dapat diandalkan di liar jika permainan itu pada akhirnya mendukung multiplayer.
Adakah yang bisa dilakukan untuk mencegah sembarang orang membaca JavaScript?
Jika tidak, haruskah semua pemrosesan game dilakukan di server di suatu tempat dengan satu-satunya tanggung jawab klien adalah menangkap input pengguna dan menggambar grafik?
html5
javascript
client-server
Kristen
sumber
sumber
Jawaban:
Simpan semua data dan logika game Anda di server. Bagian dari gim yang ada di sisi klien dapat disalin menggunakan alat yang sesuai pula (bahkan jika itu ada di Flash atau Java), jadi terima saja dan jangan terlalu peduli.
Untuk menjaga agar javascript Anda tidak dapat disalin, karena keterbacaan yang buruk, Anda dapat memperkecilnya . Lagipula itu praktik yang bagus karena membuat situs game mengunduh lebih cepat.
sumber
Di sinilah hukum membantu. Dalam praktiknya hal ini tampaknya tidak terlalu sering terjadi.
Tidak ada klien yang dapat diandalkan di alam liar, untuk alasan seperti ini. Menyerah pada mimpi ini sekarang. :)
sumber
Seperti yang direkomendasikan semua orang; simpan kode sebanyak mungkin di sisi server.
Suatu metode yang saya gunakan untuk menangani penyalinan kode agak aneh, tetapi sejauh ini telah bekerja dengan baik.
Sekarang kode rahasia Anda mengeksekusi sisi klien dan tidak akan muncul di sumber tampilan atau inspektur / konsol. Masih ada cara untuk mendapatkan kode, tetapi ini sedikit lebih sulit.
sumber
Satu-satunya cara untuk memastikan bahwa kode permainan Anda akan aman adalah dengan membangun jenis permainan klien / server dan memasukkan sebanyak mungkin kode di server. Dan tentu saja, buat server itu aman!
Masalah utama adalah bahwa jika kode berjalan di komputer saya, saya bisa memeriksanya, mendekompilasinya, dan mencari tahu cara kerjanya. Ini berlaku untuk JavaScript, Flash, C ++, apa pun. Bahkan, dalam pengembangan MMO (yang merupakan tempat sebagian besar pengalaman profesional saya) asumsi dari awal adalah bahwa klien dikompromikan: apa pun yang Anda tulis untuk klien sudah ada di tangan siapa pun yang menginginkannya, jahat atau tidak.
Kode minifying memang memberikan sejumlah kecil perlindungan terhadap orang-orang yang terlalu malas untuk menghapusnya menggunakan salah satu dari banyak alat di luar sana. (Tetapi kode produksi harus dikurangi untuk mengurangi jejak data.)
Tetapi jika Anda berada dalam situasi di mana, katakanlah, atasan Anda menginginkan semacam perlindungan kode, Anda dapat menggunakan google "Javascript obfuscator" - ada banyak perangkat lunak gratis dan berbayar di luar sana yang membuat JS setidaknya memiliki kekebalan. untuk mendekompilasi seperti Flash.
sumber
Selain semua pembicaraan tentang kebingungan kode ini, pastikan untuk meletakkan deklarasi hak cipta yang sangat jelas di bagian atas setiap file dan jelaskan bahwa lisensi tidak memungkinkan untuk perubahan atau penggunaan komersial. Ini memberi Anda jalan hukum jika seseorang mencoba menyalinnya. Jika Anda tidak mau ke pengadilan untuk itu, maka seluruh pertanyaan ini sebagian besar bersifat akademis.
sumber
Saya pikir jika Anda membuat gim multi-pemain, yang mengharuskan Anda menjaga logika gim di server, Anda mungkin akan membuatnya paling tidak menarik untuk dicuri. Anda benar-benar tidak bisa mempercayai klien. Seperti yang telah disebutkan oleh seseorang, ada alat untuk bahasa yang dikompilasi seperti Java dan Flash, yang dapat merekayasa balik teks kode dari kode byte.
sumber
Anda perlu menggunakan Javascript Minifier. Ada banyak opsi yang tersedia, jangan ragu untuk menemukan yang Anda sukai. Untuk menghemat beberapa riset, inilah yang bisa Anda coba Yahoo Minifier . Saya belum menjalankannya sendiri tetapi saya menganggap itu akan melakukan apa yang Anda butuhkan. Tujuannya adalah untuk 1) mengurangi ukuran file dan 2) mengaburkan kode. Ini dilakukan dengan menghapus semua spasi putih, komentar, dan mengganti nama variabel dengan yang lebih pendek, tidak masuk akal.
Sebagian besar aplikasi web saat ini memiliki jumlah Javascript yang signifikan dan menggunakan alat-alat seperti ini untuk mencoba melindungi IP mereka. Seperti yang orang lain katakan, Anda harus selalu bertanya, "Bisakah saya melakukan ini di server?" untuk operasi penting atau sensitif, tetapi saya percaya ini harus menawarkan perlindungan.
sumber
Gunakan kompilator penutupan Google http://code.google.com/closure/compiler/ Ini bukan hanya minimizer js;)
Apa manfaat menggunakan Closure Compiler?
Efisiensi. Closure Compiler mengurangi ukuran file JavaScript Anda dan membuatnya lebih efisien, membantu aplikasi Anda memuat lebih cepat dan mengurangi kebutuhan bandwidth Anda.
Pemeriksaan kode. Closure Compiler memberikan peringatan untuk JavaScript ilegal dan peringatan untuk operasi yang berpotensi berbahaya, membantu Anda menghasilkan JavaScript yang kurang bermasalah dan mudah dipelihara.
sumber
Atau Anda bisa menggunakan sesuatu seperti Game Maker HTML5 untuk membuat game Anda yang akan membingungkan kode untuk Anda. Itu berarti bahwa itu akan membuat kode tidak dapat dibaca oleh manusia. Dan hampir tidak mungkin untuk mengedit.
sumber
Kepemilikan apa pun harus disimpan di sisi server. Sisi klien yang Anda berikan hanya cukup untuk memfasilitasi penggunaan permainan mereka.
sumber
Menempatkan segala sesuatu di server dapat memiliki masalah kinerja dan tidak benar-benar menggunakan semua potensi web seperti yang kita kenal sekarang.
Anda dapat menulis kode Anda di c ++ dan mengompilasinya ke binari.
Klien Asli (NaCl).
Lihat https://stackoverflow.com/questions/9018537/how-to-run-c-programs-on-the-web-inside-a-browser
sumber