Obfuscator JavaScript

Obfuskasi meningkatkan biaya untuk membaca kode sumber JavaScript Anda, bukan secara mutlak (tidak ada obfuskasi front-end yang benar-benar antipeluru), tetapi cukup untuk mengurungkan pemeriksaan sekilas dan memperlambat scraping otomatis. Alat ini menerapkan pengodean array string, pengacakan pengidentifikasi, perataan alur kontrol, dan penyisipan kode mati opsional, dengan setiap opsi dapat dipilih sesuai seberapa agresif yang Anda inginkan.

Cara mengobfuskasi JavaScript

  1. 1

    Tempel kode sumber

    Kode JS valid apa pun. Jika bergantung pada nama properti global tertentu dari halaman host, tetapkan nama-nama itu sebagai dicadangkan.

  2. 2

    Pilih teknik

    Pengodean string (hex / base64), pengacakan pengidentifikasi, perataan alur kontrol, penyisipan kode mati, pembungkus swapertahanan.

  3. 3

    Pilih profil target

    Browser (aman untuk ES5, tanpa API Node), Node.js (mengizinkan `require`, `Buffer`), atau rendah (sebagian besar hanya minifikasi).

  4. 4

    Obfuskasi

    Alat menghasilkan kode yang telah ditransformasi beserta selisih ukuran. Pengaturan agresif dapat membuat keluaran 3–5 kali lebih besar daripada sumbernya.

Teknik dan biayanya bagi Anda

Teknik Meningkatkan usaha penyerang Biaya saat berjalan Biaya ukuran
Penggantian nama variabel Rendah Dapat diabaikan Lebih kecil (efek samping minifikasi)
Pengodean array string Sedang Sangat kecil (satu pencarian per string) +10–30%
Perataan alur kontrol Tinggi Terukur (~2–5%) +50–150%
Penyisipan kode mati Rendah (keamanan semu) Kecil +20–50%
Pembungkus swapertahanan Sedang Pemeriksaan sekali +5–10%
Perlindungan debug Sedang (mendeteksi DevTools) Pemeriksaan sekali +5%
VM / virtualisasi (premium) Sangat tinggi Besar (5–20x) +300–500%

Yang tidak bisa dilindungi obfuskasi

  • Rahasia. Konstanta apa pun di kode sumber front-end Anda dapat dibaca jika diberi cukup waktu. Kunci API, rahasia autentikasi, logika penetapan harga, jangan pernah mengandalkan obfuskasi untuk menyembunyikannya. Pindahkan ke sisi server.
  • Algoritme dengan keluaran yang dapat diamati. Jika browser bisa menjalankannya, penyerang dengan debugger dapat mengamati setiap masukan dan keluaran. Obfuskasi memperlambatnya; tidak menghentikannya.
  • Scraping otomatis dalam skala besar. Anti-scraping bergantung pada deteksi perilaku (fingerprinting, batas laju, CAPTCHA), bukan pada obfuskasi kode sumber.

Kapan obfuskasi sepadan

  • Anti-perusakan pada SDK tertanam (lisensi, SDK iklan, klien game).
  • Menaikkan biaya untuk menyalin-tempel implementasi pesaing tanpa banyak usaha.
  • Mempersulit klasifikasi skrip otomatis bagi scraper berspektrum luas.

Kapan justru merugikan

  • Anda sudah punya bundler. Webpack + Terser dalam mode produksi sudah meminifikasi dan mengacak variabel lokal. Menambah lapisan obfuskasi kedua hanya memberi sedikit manfaat dan membengkakkan ukuran bundel.
  • Anda mengoptimalkan First Paint / Core Web Vitals. Obfuskasi agresif melipatgandakan bundel tiga kali; itu merugikan FCP dan LCP.
  • Anda harus melakukan debug di produksi. Obfuskasi berat membuat jejak tumpukan (stack trace) Sentry hampir tidak berguna tanpa source map yang cocok, dan mengirimkan source map justru menggagalkan obfuskasi.

Kesalahan umum

  • Menganggap obfuskasi setara dengan enkripsi. Bukan begitu, ia hanyalah penghambat.
  • Mengirimkan source map bersama bundel yang diobfuskasi ke produksi. Itu sepenuhnya menetralkan obfuskasi.
  • Mengobfuskasi pustaka pihak ketiga yang sudah Anda muat dari CDN. Anda menanggung penalti ukuran tanpa keuntungan apa pun.

Pertanyaan yang Sering Diajukan

Tidak. Obfuskasi adalah penghambat, bukan gembok. Analis yang gigih dengan debugger akan memulihkan logikanya. Ia menaikkan biaya cukup untuk mengurungkan pemeriksaan sekilas dan sebagian besar scraper otomatis, tetapi itu bukan keamanan.

Jika Anda mengakses properti secara dinamis (obj["field_name"], Object.keys(obj)) atau bergantung pada nama fungsi/kelas tertentu untuk halaman host, tambahkan nama-nama itu ke daftar yang dicadangkan. Tanpa itu, penggantian nama properti dapat merusak integrasi eksternal.

Simpan kode sumber aslinya. Obfuscator adalah transformasi satu arah; Anda tidak dapat memulihkan aslinya secara persis dari keluaran yang diobfuskasi, hanya perkiraan yang dapat dibaca.

Obfuskasi ringan menambah ~10–30%. Perataan alur kontrol ditambah array string menambah 50–150%. Pengaturan terberat dapat melipatgandakan ukuran hingga tiga kali. Periksa penghitung ukuran keluaran sebelum mengirimkan.

Alat Terkait

Alat ini tersedia dalam bahasa lain