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.
Apa itu pengaburan JavaScript?
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.
Mengapa menggunakan JavaScript Obfuscation?
Obfuscation dapat melayani berbagai tujuan dan manfaat karena penggunaannya, beberapa di antaranya diberikan di bawah ini:
1-Keamanan terhadap Pencurian
Pengaburan melindungi kode dan informasi sensitif Anda dari pencuri dan penyerang dunia maya, sehingga memungkinkan privasi proyek Anda.
2-Pencegahan Temper
Kode yang dikaburkan dapat menyulitkan peretas untuk men-debugnya sehingga dapat digunakan untuk tujuan jahat.
3-Melestarikan Kepentingan Bisnis
Pengaburan akan memastikan keunggulan kompetitif dengan menjaga implementasi unik dari taktik dan strategi seseorang.
4-Perlindungan Informasi Sensitif
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.
Bagaimana Cara Kerja Pengaburan JavaScript?
Cara kerja pengaburan JS ditunjukkan di bawah ini
Seluruh proses mengikuti beberapa langkah seperti
1-Penggantian nama variabel
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);}
Pengkodean 2-String & Angka
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";
3-Kontrol perataan aliran
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.
4-Penyisipan Kode Mati
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);
}
5. Teknik Anti-Debugging
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.
Saran Latihan untuk Pengaburan dalam JavaScript
Untuk praktik terbaik pengaburan di JS, ada beberapa saran untuk mempraktikkannya.
Pemilihan Alat yang andal
Pengoperasian obfuscator tepercaya seperti JavaScript Obfuscator atau UglifyJS untuk menghapus transformasi yang kuat.
2-Pengaburan dengan Langkah-langkah keamanan lainnya
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.
Dokumentasi 3-Kode
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.
4-Aktivitas
Tetap diperbarui tentang ancaman yang muncul dan modifikasi taktik pengaburan Anda.
Pertimbangan Etis
Ide pengaburan muncul dengan rasa perlindungan etis proyek Anda dari serangan siber. Dengan demikian, penyalahgunaannya dapat menyebabkan keadaan buruk, seperti:
1-Menyebarkan Malware
Penjahat dunia maya sering menggunakan teknik pengaburan untuk menyembunyikan skrip berbahaya atau catatan kriminal mereka.
2-Praktik Penipuan
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.
Keterbatasan 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:
1-Dampak Kinerja:
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.
2-Kurangnya Keamanan Mutlak:
Peretas atau penyerang ahli dapat menggunakan pengaburan pada kode Anda yang sudah dikaburkan, yang pada akhirnya tidak meninggalkan perlindungan kode Anda.
3-Tantangan Debugging:
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.
4-Masalah Kompatibilitas:
Teknik pengaburan khusus tidak dapat diakses di semua browser atau lingkungan sehingga meningkatkan kemungkinan masalah teknis dalam output atau kerja kode.
Kesimpulan
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.