Deskripsi
Saya merancang aplikasi Node.JS (lebih seperti situs web lengkap). Aplikasi ini akan mengirim lima file JavaScript dan akan memiliki <script>
tag yang menghubungkan mereka bersama.
Pertanyaan
Bagaimana saya bisa mencegah pengguna dan penyerang mengintip dan mengedit kode saya ?
Contohnya adalah:
Ctrl+ Shift+I
Di Devtools , Sumber goto , pilih file untuk diedit (yaitu
index.html
) dan menulis suntinganMenekan Ctrl+ Sakan menyebabkan pengeditan langsung terjadi
Saya ingin mencegah Contoh di atas terjadi ... Apakah mungkin?
Inilah yang saya pikirkan:
Saya akan membuat file JavaScript sisi klien lain, prevent_keys.js
Ini akan mendengarkan Ctrl+ Shift+ I.
Jika kembali
true
(yaitu tombol ditekan), itu akanlog
tombol.
Namun itu tidak akan menghentikan pengguna untuk menggunakan Devtools secara langsung.
sumber
Jawaban:
Anda benar-benar tidak dapat mencegah pengguna mengakses dan memodifikasi konten yang Anda kirimkan kepada mereka. Anda tidak memiliki kontrol atas browser, atau browser yang mereka gunakan, atau apakah mereka sebenarnya mengunduh kode sumber Anda melalui browser. Anda mengeksekusi kode Anda di perangkat orang lain. Anda tidak boleh dan tidak bisa berasumsi tentang integritas perangkat ini.
Jika Anda memiliki kode yang tidak ingin Anda tampilkan, jangan kirimkan ke browser. Sebagai gantinya, biarkan browser mengirim permintaan ke server tempat Anda mengeksekusi kode rahasia.
Sebagai contoh nyata, jangan periksa kata sandi pada klien. Klien dapat dimodifikasi untuk selalu memberi tahu server "kata sandi itu benar". Sebaliknya, otentikasi harus terjadi di server tepercaya Anda.
sumber
Kamu tidak bisa Salah satu aturan dasar komputasi: Anda tidak bisa mempercayai klien . Apa pun skema cerdas yang Anda pikirkan, saya bisa mengatasinya jika saya mengendalikan klien.
sumber
Mengapa Anda tidak ingin kode tersebut dimodifikasi?
Keamanan? Kepercayaan? Rahasia Dagang?
Maka jangan mengirim kode, minta klien untuk mengirim permintaan, dan mengembalikan hasilnya. Mungkin bukan hasil pribadi atau istimewa, hanya selesai sudah cukup untuk banyak UI.
Karena versi kode Anda sendiri yang sedikit dimodifikasi menyakiti garis bawah Anda?
Gunakan kode yang mengaburkan, beri nama mangler, dan segmen kode sepele.
Teknik-teknik ini meningkatkan standar keterampilan aktual, dan alat yang diperlukan untuk membuat sedikit variasi dari situs web Anda. Perlu diketahui bahwa teknik ini dapat membuat kode Anda lebih lambat, dapat memperkenalkan bug dan pesan kesalahan yang menarik dan tidak berarti, namun masih dapat diatasi oleh seseorang dengan alat dan / atau keterampilan yang tepat. Jadi pertimbangkan apakah itu sepadan. Pada akhirnya, siapa pun bisa benar-benar menulis kode yang sama.
sumber