Daftar Isi

JavaScript adalah bahasa pemrograman modern yang membuat konten situs web yang luas dan dinamis. Menariknya, ini bekerja berdasarkan prinsip benang tunggal. Itu berarti Anda hanya dapat melakukan satu operasi pada satu waktu. Objek dapat dibuat secara langsung, dan variabel tidak memiliki tipe statis tetap.

JavaScript mudah bagi banyak pengembang web, dan kode aplikasinya dapat dijangkau oleh pengguna dan siapa saja. Itu adalah bagian paling menantang dalam menggunakan JavaScript untuk pengembang situs web. Dengan cara ini, banyak penyerang dapat dengan mudah mengakses dan mengeksploitasi kode situs web dan kerentanan data yang dapat membahayakan situs web dan bisnis.

Untuk mengatasi atau menyimpan kode yang dihasilkan oleh JavaScript, pengembang menggunakan teknik yang disebut JavaScript Obfuscation. Pada artikel ini, Anda akan menjelajahi JavaScript Obfuscator, bagaimana Anda dapat melindungi dan menyimpan kode JS, dan pentingnya JS obfuscator.

Proses untuk mengamankan kode, di mana pengembang mengubah atau memodifikasi kode inti menjadi bentuk bermasalah yang tidak dapat dipahami oleh manusia dengan mudah sambil memastikan eksekusi kode yang benar. Tidak seperti enkripsi (yang memerlukan kunci untuk memecahkan kode yang dimodifikasi), pengaburan tidak memerlukan kunci apa pun untuk merestrukturisasi kode inti. 

Tujuan utama dari proses ini adalah untuk mencegah atau menghentikan akses yang tidak sah, rekayasa balik, dan pencurian kekayaan intelektual.

Obfuscation dapat melayani berbagai tujuan dan manfaat karena penggunaannya, beberapa di antaranya diberikan di bawah ini:

Pengaburan melindungi kode dan informasi sensitif Anda dari pencuri dan penyerang dunia maya, sehingga memungkinkan privasi proyek Anda.

Kode yang dikaburkan dapat menyulitkan peretas untuk men-debugnya sehingga dapat digunakan untuk tujuan jahat.

Pengaburan akan memastikan keunggulan kompetitif dengan menjaga implementasi unik dari taktik dan strategi seseorang.

Beberapa kode menyertakan informasi sensitif, kunci, atau logika yang penting untuk pengoperasian tetapi tidak boleh diekspos ke publik, mencegah kebocoran informasi Anda dan membantu informasi tersebut hanya untuk Anda.

Berikut ini adalah contoh JavaScript Obfuscator:

Kode inti dari kata Hello di JS terlihat seperti ini:

fungsi greet(nama) {

    mengembalikan "Halo, " + nama + "!";

}

Pengoperasian pengaburan mengubah kode berikut menjadi ini:

function _0x2c56(_0x1a73){return 'Hello, '+_0x1a73+'!';}

Kedua kode memiliki arti yang sama, dan outputnya tidak menghasilkan perbedaan, tetapi perbedaan kesalahan ketik menghasilkan perlindungan kode yang signifikan. Hal-hal yang kompleks selalu lebih sulit diakses.

Cara kerja pengaburan JS ditunjukkan di bawah ini

Seluruh proses mengikuti beberapa langkah seperti 

Di sini, penggantian nama variabel deskriptif dilakukan dengan string yang tidak berarti (misalnya, nama pengguna menjadi a1b2c3)

Contoh diberikan di bawah ini untuk memahami dengan lebih baik

Kode asli:

function calculateTotal(price, tax) {

    harga kembali + (harga * pajak);

}

Kode ini bisa terlihat seperti ini setelah pengaburan

Kode yang dikaburkan:

fungsi _0x45a1(x,y){mengembalikan x+(x*y);}

Ini juga dikenal sebagai enkripsi string. Ini adalah proses di mana data sensitif seperti URL atau kunci API dikodekan dengan string dalam kode. Berikut ini adalah contoh Enkripsi String:

Kode Asli:

const apiKey = "ABC123";

Versi yang dikaburkan diberikan di bawah ini.

Kode yang dikaburkan:

const _0x3d2a = "\x41\x42\x43\x31\x32\x33";

 Dalam bentuk singkat yang dikenal sebagai Code flattening. Struktur kode yang kompleks disederhanakan, komentar dihapus untuk mengurangi keterbacaan sebanyak mungkin.

Kode Asli:

Kode sederhana bisa terlihat seperti ini 

function checkAccess(user) {

    if (user.role === "admin") mengembalikan true;

    else return false;

}

Kode Dikaburkan:

fungsi _0x1a2b(_0x3c4d) {

    Mengembalikan _0x3c4d["\x72\x6f\x6c\x65"] === "\x61\x64\x6d\x69\x6e" ? !0x0 : !0x1;

}

 Keterbacaan sangat berkurang, seperti yang diamati dari perbedaan antara dua kode yang disajikan di atas.

Ini mirip dengan Code flattening & kontrol aliran Alterasi. Ini adalah penambahan cuplikan kode yang tidak berarti ke kode asli agar kurang mudah dibaca.

function validateInput(input) {

    if (input.length > 5) mengembalikan true;

    else return false;

    // Kode mati di bawah ini

    const x = 10;

    console.log("Ini tidak pernah berjalan");

}

Versi penyisipan kode mati (Dikaburkan) dari kode ini terlihat  seperti ini:

function validateInput(input) {

    if (input.length > 5) {

        // Kode mati yang tidak berguna

        const unusedVar = Math.random() * 100;

        console.log("Ini adalah bagian dari kode mati: ", unusedVar);

        mengembalikan benar;

    } else {

        // Kode mati lainnya di bawah ini

        let fakeCondition = input.includes("rahasia");

        if (fakeCondition) {

            console.log("Kondisi ini palsu dan tidak relevan");

        }

        mengembalikan false;

    }

    // Kode mati yang tidak dapat dijangkau

    const x = 10;

    const y = 20;

    console.log("Ini tidak akan pernah mengeksekusi tetapi membingungkan penyerang: ", x + y);

}

Teknik anti-debugging di JS unik dan melibatkan pernyataan debugger, deteksi konsol, dan serangan waktu untuk menghambat kode dan debugging.

setInterval(function(){

    if (jenis console._commandLineAPI !== 'undefined') {

        alert("Debugger terdeteksi!");

        window.location.href = "tentang:kosong";

    }

}, 1000);

Kode yang sama, ketika dimodifikasi menjadi versi yang dikaburkan menggunakan alat pengaburan JS. Menjadi lebih sulit untuk dipahami dan dianalisis dengan menggunakan lapisan anti-debugging ekstra.

Kode yang dikaburkan:

(fungsi () {

    var _0x3c87 = ['_commandLineAPI', 'undefined', 'about:blank'];

    (fungsi (_0x4d1b99, _0x1ea782) {

        var _0x223b1b = fungsi (_0x234219) {

            sementara (--_0x234219) {

                _0x4d1b99['push'](_0x4d1b99['shift']());

            }

        };

        _0x223b1b(++_0x1ea782);

    }(_0x3c87, 0x18f));

    var _0x4a68 = fungsi (_0x4d1b99, _0x1ea782) {

        _0x4d1b99 = _0x4d1b99 - 0x0;

        var _0x223b1b = _0x3c87[_0x4d1b99];

        mengembalikan _0x223b1b;

    };

    setInterval(fungsi () {

        if (jeniskonsol[_0x4a68('0x0')] !== _0x4a68('0x1')) {

            alert('Debugger terdeteksi!');

            window['location']['href'] = _0x4a68('0x2');

        }

    }, 0x3e8);

})();

Ini hanyalah beberapa langkah sederhana (teknik) tentang bagaimana bagian kode yang lugas dan penting dapat dikonversi ke tingkat kesulitan tertinggi, membuatnya terlihat seperti kode yang sangat canggih dan kompleks menggunakan alat pengaburan.

Untuk praktik terbaik pengaburan di JS, ada beberapa saran untuk mempraktikkannya.

Pengoperasian obfuscator tepercaya seperti JavaScript Obfuscator atau UglifyJS untuk menghapus transformasi yang kuat.  

Obfuscation adalah lapisan pertahanan startup. Memasangkannya dengan teknik yang berbeda seperti pengujian yang ketat, praktik pengkodean yang aman, dll dapat menambahkan perlindungan yang tidak dapat dipecahkan ke proyek Anda.

Simpan versi yang jelas dari kode asli dan chartering untuk debugging di masa mendatang. Ini akan memungkinkan Anda mengakses kode asli Anda, sehingga membuat proses amandemen lebih mudah.

Tetap diperbarui tentang ancaman yang muncul dan modifikasi taktik pengaburan Anda.

Ide pengaburan muncul dengan rasa perlindungan etis proyek Anda dari serangan siber. Dengan demikian, penyalahgunaannya dapat menyebabkan keadaan buruk, seperti:

Penjahat dunia maya sering menggunakan teknik pengaburan untuk menyembunyikan skrip berbahaya atau catatan kriminal mereka.

Pengaburan juga dapat menyerang privasi seseorang, melacak skrip, dll. Selalu penting untuk mempertimbangkan penggunaan teknik tersebut dengan tepat. Menjaga keseimbangan di antara hal-hal tersebut adalah langkah pertama untuk melakukan pengaburan.

Meskipun menggunakan pengaburan untuk melindungi kode dan proyek Anda sangat bermanfaat, itu tidak mudah. Ini memiliki beberapa keterbatasan yang dapat membuat Anda iritasi saat menggunakannya. Beberapa kesenjangan yang belum terpenuhi dibahas di bawah ini:

Jika kode Anda dikaburkan lebih dari yang diperlukan, itu akan berdampak negatif pada runtime kode Anda, terutama jika pembuatan dinamis atau metode kode redundan digunakan.

Peretas atau penyerang ahli dapat menggunakan pengaburan pada kode Anda yang sudah dikaburkan, yang pada akhirnya tidak meninggalkan perlindungan kode Anda.

Kode yang dikaburkan selalu sulit untuk di-debug, dipelihara, atau dikembangkan karena penambahan baris yang tidak perlu digunakan untuk perlindungannya. Bahkan lebih sulit bagi pemrogram yang bukan bagian dari tim pengembangan kode asli dan kode yang dikaburkan.

Teknik pengaburan khusus tidak dapat diakses di semua browser atau lingkungan sehingga meningkatkan kemungkinan masalah teknis dalam output atau kerja kode.

Pengaburan JavaScript adalah alat yang kuat dan bermanfaat untuk melindungi kode seseorang dari pencurian, peretas, penyerang, gangguan, dan rekayasa balik. Meskipun ini adalah perisai perlindungan untuk informasi sensitif dan kekayaan intelektual Anda yang disimpan di komputer Anda dengan pengkodean, ini bukan solusi permanen atau tak terkalahkan untuk keselamatan.

 Pengembang tidak boleh hanya mengandalkan pengaburan. Dengan memahami dan mendapatkan pengetahuan yang cukup tentang teknik, manfaat, dan keterbatasannya, pengembang dapat membuatnya lebih berharga dan efektif untuk perlindungan utama kode Anda.

Meskipun memiliki beberapa manfaat, keterbatasan, dan segala sesuatu yang dibutuhkan proses atau teknik, kekuatan sebenarnya terletak pada kenyataan bahwa itu adalah bagian dari strategi pertahanan berlapis; Anda perlu berlatih cukup untuk membuatnya lebih efektif, membantu, dan produktif bagi Anda daripada orang lain. Ini membantu memastikan integritas, kerahasiaan, dan keandalan kode JavaScript Anda dalam lanskap digital yang terus berkembang. 

Singkatnya, ini adalah alat untuk membantu Anda menjaga privasi dan memotivasi Anda untuk memikirkan cara yang lebih efektif untuk melindungi informasi Anda.

Untuk alat lainnya untuk mengoptimalkan pengembangan web Anda, lihat:

Untuk alat keamanan lainnya, kunjungi Bagian Keamanan UrwaTools.

UrwaTools Editorial

The UrwaTools Editorial Team delivers clear, practical, and trustworthy content designed to help users solve problems ef...

Buletin

Tetap terhubung dengan alat-alat terbaru kami.