Pertanyaan yang Sering Diajukan
Pertanyaan Umum
Pertanyaan umum seputar obfuskasi JavaScript dan cara kerjanya.
Ada banyak alasan untuk melindungi kode Anda: mencegah siapa pun sekadar menyalin hasil kerja Anda (terutama penting untuk proyek sisi klien seperti game HTML5), membuat kode lebih sulit dipahami dan dimodifikasi, serta melindungi pekerjaan yang belum dibayar sehingga Anda dapat menunjukkan build yang berfungsi kepada klien tanpa menyerahkan kode sumbernya.
Obfuskasi standar menulis ulang JavaScript Anda menjadi JavaScript yang lebih sulit dibaca: nama diganti, string dipindahkan dan dienkode, alur kontrol disusun ulang, tetapi hasilnya tetap JavaScript yang dapat ditelusuri langkah demi langkah dengan debugger. Obfuskasi VM (Virtual Machine) mengompilasi badan fungsi Anda menjadi bytecode khusus dan menyertakan interpreter tertanam yang menjalankannya, sehingga logika yang dilindungi tidak lagi ada sebagai JavaScript. Lihat Obfuskasi VM untuk fungsi mana yang tercakup dan cara memilihnya.
Ya. Atur vmTargetFunctionsMode ke comment, lalu tandai setiap fungsi yang ingin dilindungi dengan /* javascript-obfuscator:vm */. Pertahankan komentar ini melewati setiap langkah build yang berjalan sebelum obfuskasi. Lihat Menargetkan Fungsi Tertentu.
Tidak. Kunci API, rahasia, dan kredensial TIDAK BOLEH disimpan di dalam kode frontend. Bahkan dengan tingkat obfuskasi tertinggi sekalipun, data apa pun di dalam JavaScript frontend dapat diekstrak oleh penyerang yang gigih. Obfuskasi mempersulit rekayasa balik, tetapi ia bukan enkripsi dan tidak boleh diandalkan untuk mengamankan rahasia. Sebagai gantinya, simpan rahasia di server backend Anda, gunakan variabel lingkungan di sisi server, teruskan panggilan API melalui backend Anda untuk menyembunyikan kunci, atau gunakan token berumur pendek yang diterbitkan oleh server Anda.
Obfuskasi menambah usaha untuk memahami dan mengubah kode, baik analisisnya dilakukan oleh manusia, alat, maupun asisten AI, tetapi tidak menjamin rekayasa balik mustahil. Runtime tetap dapat diamati dalam lingkungan yang dikuasai penyerang. Simpan rahasia dan keputusan keamanan yang menentukan di server. Cara VM Mentransformasi Kode.
Pertama, singkirkan kemungkinan pertahanan runtime. VM Self Defending dan VM Debug Protection sengaja menghentikan eksekusi di bawah alat otomasi, peramban headless, dan debugger, serta saat target tidak cocok dengan runtime sebenarnya, jadi jalankan pengujian fungsional pada build pengujian terpisah dengan keduanya dimatikan. Jika build itu masih rusak, persempit masalah dengan vmTargetFunctionsMode: 'comment' untuk memvirtualisasi satu fungsi setiap kali. Panduan pemecahan masalah menjelaskan setiap langkah dan apa yang perlu disertakan dalam laporan bug.
Obfuscator menambahkan kode: pengenal mendapat nama hasil generate, string dipindahkan ke string array beserta fungsi aksesnya (opsional dienkode), dan pada obfuskasi VM, satu interpreter virtual machine utuh disertakan bersama bytecode Anda. Jangan terlalu khawatir soal ukuran - kode hasil obfuskasi terkompresi dengan baik menggunakan gzip atau Brotli, yang secara bawaan diaktifkan oleh sebagian besar server.
Preset yang lebih berat dapat memperbesar keluaran dan memperlambat eksekusi. Ukur waktu mulai, jalur yang sering dieksekusi, dan ukuran bundel terkompresi Anda sendiri, bukan mengandalkan pengali perlambatan tetap. Referensi Opsi · Praktik Terbaik
Tidak. Menulis ulang keluaran dapat merusaknya, terutama dengan Self Defending atau VM Self Defending, yang mendeteksi perubahan pada kode. Anda boleh menjalankan minifier sebelum obfuskasi, selama minifier tersebut mempertahankan komentar javascript-obfuscator seperti /* javascript-obfuscator:vm */.
Kami tidak menyimpan kode sumber Anda. Obfuskasi dasar untuk JavaScript berjalan di peramban Anda. Obfuskasi VM dan HTML mengirim sumber ke server kami, yang memprosesnya lalu membuangnya; jika permintaan lebih besar dari 4.4 MB, paket Team dan Business mengunggahnya ke penyimpanan sementara yang dihapus setelah pemrosesan. Untuk menangani penyalahgunaan dan menganalisis penggunaan, kami menyimpan selama tiga bulan hash SHA-256 dari setiap keluaran hasil obfuskasi dan beberapa pengaturan yang digunakan (seperti preset, target, dan pertahanan VM), tidak pernah kodenya atau isi apa pun darinya. Riwayat dasbor hanya disimpan di peramban Anda; kelola melalui Riwayat.
Tidak. Obfuscator tidak menyimpan nama, komentar, atau format asli Anda, sehingga keluarannya tidak dapat diubah kembali menjadi kode sumber Anda. Itu bukan jaminan keamanan (lihat pertanyaan tentang deobfuskasi di atas), tetapi artinya Anda harus menyimpan kode aslinya dengan aman.
Ya. Anda dapat memilih "Node" sebagai target pada opsi obfuskasi untuk mengoptimalkan keluaran bagi lingkungan Node.js.
Dukungan mencakup sintaks ES2015+, async/await, optional chaining, dan field kelas privat; uji sintaks yang lebih baru dengan versi obfuscator yang Anda pilih. Kompilasi TypeScript dan JSX serta bundel aplikasi Anda sebelum obfuskasi - lihat Kompatibilitas Runtime. Berkas HTML didukung melalui parseHtml; lihat Obfuskasi HTML.
Keluaran hasil obfuskasi - termasuk interpreter VM dan lapisan Self Defending - didukung dan diuji secara aktif pada peramban desktop evergreen serta iOS 16+ (kurang lebih 4 tahun terakhir). Peramban yang lebih lama didukung sebisa mungkin hingga batas minimum dukungan ES2015 module; apa pun di bawah itu, termasuk Internet Explorer, berada di luar cakupan.
Lihat paket harga kami untuk proteksi VM, atau coba uji coba daring gratis untuk obfuskasi standar. Baca panduan memulai untuk penjelasan lengkapnya.
Harga & Akun
Pertanyaan seputar paket, penagihan, dan batas penggunaan.
Penggunaan diukur berdasarkan ukuran kode sumber masukan Anda dalam byte. Setiap pekerjaan obfuskasi dikenakan biaya minimum 0,1 MB (102.400 byte) untuk menjamin alokasi sumber daya yang adil. Sebagai contoh, jika Anda mengobfuskasi berkas berukuran 50 KB, pekerjaan tersebut akan dihitung sebagai 0,1 MB dari kuota Anda. Berkas yang lebih besar dari 0,1 MB dihitung sesuai ukuran sebenarnya.
Setelah Anda mencapai batas obfuskasi VM, Anda tetap dapat menggunakan obfuskasi standar (berbasis peramban) secara gratis tanpa batas. Untuk paket berbayar, kuota VM Anda diatur ulang setiap bulan pada tanggal yang sama dengan awal langganan Anda, termasuk pada paket tahunan. Paket Free memiliki batas seumur hidup yang tidak diatur ulang. Paket dengan batas VM harian dapat kembali melakukan obfuskasi dengan VM keesokan harinya setelah batas tersebut tercapai. Anda dapat meningkatkan paket kapan saja untuk mendapatkan kuota obfuskasi VM yang lebih besar.
Ya, Anda dapat menaikkan atau menurunkan paket kapan saja. Saat menaikkan paket, Anda akan ditagih secara proporsional untuk sisa periode penagihan. Saat menurunkan paket, harga baru berlaku mulai siklus penagihan berikutnya.
Anda dapat membatalkan langganan kapan saja. Anda tetap memiliki akses ke paket Anda hingga akhir periode penagihan saat ini. Perlu diketahui bahwa kami tidak menyediakan pengembalian dana untuk periode penagihan sebagian atau waktu yang tidak terpakai.
Kami menerima semua kartu kredit utama (Visa, Mastercard, American Express) dan kartu debit melalui pemroses pembayaran kami yang aman, Stripe. Semua transaksi dienkripsi dan sesuai standar PCI.
