Cara Mengamankan Script Node.js agar Tidak Bisa Diubah atau Di-decode

Node.js merupakan platform yang populer untuk pengembangan aplikasi berbasis JavaScript. Namun, karena kode sumbernya mudah dibaca dan dimo...



Node.js merupakan platform yang populer untuk pengembangan aplikasi berbasis JavaScript. Namun, karena kode sumbernya mudah dibaca dan dimodifikasi, ada tantangan dalam mengamankan kode agar tidak bisa diubah atau dibajak oleh pihak yang tidak berwenang. Salah satu solusi untuk masalah ini adalah dengan menggunakan teknik enkripsi dan obfuscation, serta mengonversi script menjadi binary executable.

Dalam artikel ini, kita akan membahas berbagai metode untuk mengamankan script Node.js agar tidak mudah dimodifikasi atau dibaca oleh orang lain.


1. Menggunakan Obfuscation Code

Obfuscation atau pengacakan kode adalah teknik untuk mengubah kode sumber menjadi bentuk yang sulit dibaca tanpa mengubah fungsionalitasnya. Teknik ini sering digunakan untuk menghambat upaya reverse engineering.

1.1. Menggunakan JavaScript Obfuscator

Salah satu tools yang bisa digunakan untuk melakukan obfuscation pada kode JavaScript adalah javascript-obfuscator.

Cara menggunakannya:

  1. Install package:
    npm install -g javascript-obfuscator
    
  2. Jalankan perintah berikut untuk mengubah kode:
    javascript-obfuscator input.js --output output.js
    

Contoh kode sebelum obfuscation:

function helloWorld() {
    console.log("Hello, World!");
}
helloWorld();

Setelah obfuscation:

var _0x3e74=['log','Hello,\x20World!'];(function(_0x4c56a6,_0x3e7402){
    var _0x586aa2=function(_0x5e2dcd){
        while(--_0x5e2dcd){
            _0x4c56a6['push'](_0x4c56a6['shift']());
        }
    };
    _0x586aa2(++_0x3e7402);
}(_0x3e74,0x1aa));var _0x586a=function(_0x4c56a6,_0x3e7402){
    _0x4c56a6=_0x4c56a6-0x0;
    var _0x586aa2=_0x3e74[_0x4c56a6];
    return _0x586aa2;
};
function helloWorld(){
    console[_0x586a('0x0')](_0x586a('0x1'));
}
helloWorld();

Kode ini tetap berjalan normal tetapi sangat sulit dipahami oleh manusia.


2. Mengenkripsi Kode JavaScript

Selain obfuscation, kita juga bisa mengenkripsi kode sumber menggunakan teknik enkripsi. Salah satu metode yang bisa digunakan adalah dengan mengenkripsi file .js dan mendekripsinya saat runtime.

2.1. Menggunakan AES untuk Enkripsi Kode

Gunakan library crypto bawaan Node.js untuk mengenkripsi kode sumber.

Contoh enkripsi file menggunakan AES-256:

const crypto = require('crypto');
const fs = require('fs');

const algorithm = 'aes-256-cbc';
const key = crypto.scryptSync('password-kuat', 'salt', 32);
const iv = crypto.randomBytes(16);

function encryptFile(inputFile, outputFile) {
    const cipher = crypto.createCipheriv(algorithm, key, iv);
    const input = fs.createReadStream(inputFile);
    const output = fs.createWriteStream(outputFile);

    input.pipe(cipher).pipe(output);
    output.on('finish', () => console.log('File berhasil dienkripsi'));
}

encryptFile('script.js', 'script.enc');

Lalu, untuk menjalankan kode yang sudah dienkripsi, kita bisa mendekripsinya saat runtime.

function decryptFile(inputFile) {
    const decipher = crypto.createDecipheriv(algorithm, key, iv);
    const input = fs.readFileSync(inputFile);
    return Buffer.concat([decipher.update(input), decipher.final()]).toString();
}

const decryptedCode = decryptFile('script.enc');
eval(decryptedCode); // Menjalankan kode hasil dekripsi

Metode ini membuat kode sumber tidak bisa dibaca langsung tanpa kunci enkripsi.


3. Mengonversi Script Menjadi Binary Executable

Cara paling aman agar kode tidak bisa diubah atau di-decode adalah dengan mengonversi script Node.js menjadi binary executable.

3.1. Menggunakan pkg dari vercel

pkg adalah alat yang memungkinkan kita mengonversi aplikasi Node.js menjadi binary executable.

Cara menggunakannya:

  1. Install pkg:
    npm install -g pkg
    
  2. Buat file package.json jika belum ada, lalu tambahkan konfigurasi berikut:
    {
      "bin": "script.js"
    }
    
  3. Jalankan perintah berikut untuk membuat binary:
    pkg script.js --targets node18-linux-x64,node18-win-x64,node18-macos-x64
    

Setelah proses selesai, kita akan mendapatkan file executable yang bisa dijalankan langsung tanpa perlu Node.js.


4. Menggunakan Native Addon C++ untuk Node.js

Jika Anda ingin keamanan yang lebih tinggi, Anda bisa menulis bagian dari kode dalam bahasa C++ sebagai Native Addon. Kode dalam C++ dikompilasi menjadi binary sehingga lebih sulit untuk dibalikkan ke bentuk kode asli.

Langkah-langkah:

  1. Install node-gyp:
    npm install -g node-gyp
    
  2. Buat file addon.cc:

    #include <node.h>
    namespace demo {
      using v8::FunctionCallbackInfo;
      using v8::Isolate;
      using v8::Local;
      using v8::Object;
      using v8::String;
      using v8::Value;
    
      void Method(const FunctionCallbackInfo<Value>& args) {
        Isolate* isolate = args.GetIsolate();
        args.GetReturnValue().Set(String::NewFromUtf8(isolate, "Hello from C++").ToLocalChecked());
      }
    
      void Initialize(Local<Object> exports) {
        NODE_SET_METHOD(exports, "hello", Method);
      }
    
      NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize)
    }
    
  3. Buat file binding.gyp:
    {
      "targets": [
        {
          "target_name": "addon",
          "sources": ["addon.cc"]
        }
      ]
    }
    
  4. Jalankan perintah berikut untuk membangun addon:
    node-gyp configure build
    
  5. Gunakan addon di Node.js:
    const addon = require('./build/Release/addon');
    console.log(addon.hello());
    

Kode ini akan dieksekusi dari file .node yang sudah dikompilasi sehingga lebih sulit untuk diubah.


Kesimpulan

Untuk mengamankan script Node.js agar tidak bisa dimodifikasi atau di-decode, ada beberapa metode yang bisa digunakan:

  1. Obfuscation Code menggunakan javascript-obfuscator untuk membuat kode sulit dibaca.
  2. Enkripsi kode sumber menggunakan AES-256 dan hanya mendekripsi saat runtime.
  3. Mengubah script menjadi binary executable menggunakan pkg agar kode tidak bisa dilihat langsung.
  4. Menggunakan Native Addon C++ untuk menjalankan bagian penting aplikasi dalam bentuk binary.

Dengan kombinasi metode ini, kita bisa membuat kode lebih aman dan sulit untuk di-reverse engineer.

COMMENTS

Nama

2fa,2,adsense,3,ai,36,Alat,1,Algorithms,3,Android,29,anti virus,1,Apache,4,api,4,apipedia,3,Aplikasi Android,10,apps,2,AppSheet,40,arang,1,Array,3,array formula,3,Artikel,8,bca,1,Belajar,1,Bengkak,1,Berita,1,Berita terkini,13,Biografi,1,Bisnis,139,Bitcoin,1,Blog,7,Blogger,34,Blogger Template,1,Blogging,2,Bootable,1,bot,1,build with ai,10,build with syahdandev,16,bun.js,1,catlang,1,chat gpt,2,Cheat,1,Chrome,2,claude,1,cloudflare,1,Code,16,coding,11,collaboration tools,1,Competitive Coding,7,copilot,1,CPU,1,Crud,1,CSS3,2,cybersecurity,8,Data Structures,18,Database,1,decode,1,Deep Learning,3,Desain Blogger,47,Design,3,developer,5,Development,8,Domain Hosting,2,Download,4,dunia kerja,2,Elon Musk,4,enak,1,encode,1,excel,2,express,1,Facebook,2,fact or hoax,1,fastify,1,free,1,Free Course,13,Game,5,Gamers,2,gemini,2,generate with AI,3,generator,1,github,2,google,12,Google AdSense,20,Google Apps Script,25,google calendar,1,google docs,2,google drive,2,google forms,1,google mail,1,google maps,1,Google Script,3,google sheets,15,Google Webmaster Tools,1,Hardware,1,Home,1,hosting,4,Hostinger,1,HP,2,HTML,6,HTML5,2,HyperOs,1,ice cream,1,ide kreatif,2,image creator,2,Indonesia,1,Instagram,2,instant vdeo generator,1,integrator,1,Internet,8,iOS,1,IOT,2,iphone,1,IT,6,JavaScript,7,js,4,Kenali,1,Keren,1,Kesehatan,14,laragon,1,laravel,1,Leet Code,7,library,1,Linked List,4,Linux,8,llama,1,Machine Learning,4,malware,2,map,1,Mark Zuck,1,Marketing Tools,1,marketplace,1,Mata,1,Math,8,mbti,2,McDonald's,1,meme,1,meta,1,mfa,1,Microsoft Word,1,Minimalis,1,miscellaneous questions,1,mixue,1,Mobile Legends,4,Motherboard,1,motivasi,1,murah,1,mysql,5,Neovim,1,Networking,1,next js,1,ngingx,1,NIK,1,NLP,1,no code,5,node js,11,nodejs,1,NPWP,1,obfuscated,1,Office,1,open ai,3,Oppo,1,Parallel Space,1,pc,2,PDF Print,1,pgsql,2,Phoenix OS,1,PHP,16,phpmyadmin,2,portofolio,1,postman,3,Power Point,1,Presentation,1,price list,1,Program Aplikasi,6,programmer,3,programming,1,psikolog,4,python,5,query,1,Quesions or Answers (Quora),2,Questions or Answers (Quora),1,RAR,2,Recursion,3,regex,2,Regulasi,1,Review,147,Rufus,1,Rumus,55,Sakit,1,Samsung,1,Security,1,SEO,21,SHAREit,1,shop,1,simple apps,2,Smart City,1,smartfren,1,Smartphone,1,sms,1,Social Media,1,socket.io,2,Software,2,spesifikasi,1,SQL,1,SQL Server,1,Steemit,7,string,3,team IT,1,Tebak Gambar,2,Technology,4,Teknologi,8,Teknologi Informasi,3,Telegram,3,Template Blog SEO,10,Template Blogger,1,Templates,1,terminal,1,tiktok,1,Tips,22,Tips & Trik,20,Tips Blogging,36,Tips SEO,23,toolkit,1,Tree,8,Trick,27,trik,3,Tulisan Lepas,1,tutorial,6,Tutorial CSS,3,Tutorial HTML,56,Tutorial JavaScript,3,Twitter,2,Ubuntu,5,udemy,7,UX,8,VirtualBox,1,VLC Media Player,1,VSCode,2,waconsole,26,wallpaper engine,1,web dev,2,Web Server,5,WhatsApp,14,WhatsApp Gateway,8,Widget,2,Windows,25,wordpress,4,XAMPP,7,Xiaomi,5,Yii2,1,YouTube,3,
ltr
item
Syahdan Dev Blog: Cara Mengamankan Script Node.js agar Tidak Bisa Diubah atau Di-decode
Cara Mengamankan Script Node.js agar Tidak Bisa Diubah atau Di-decode
https://blogger.googleusercontent.com/img/a/AVvXsEiTSZWb55PyQMF0LvoVGmOl39Ppe-hKtjpXVMjZKPLhidbosRd2yrNnT9rtZMkSYMusoP4shz6gU-dsZj5RaVjkwVtNp54L3tVrU_knBMrQR4qKp44kgO1NCYVEzSfhTuTh6FSq8VHTR5q7iqqveywDRT5LWn04-sIzBVEkpqFPqEEyeyXZbiEN4-J9Ojs
https://blogger.googleusercontent.com/img/a/AVvXsEiTSZWb55PyQMF0LvoVGmOl39Ppe-hKtjpXVMjZKPLhidbosRd2yrNnT9rtZMkSYMusoP4shz6gU-dsZj5RaVjkwVtNp54L3tVrU_knBMrQR4qKp44kgO1NCYVEzSfhTuTh6FSq8VHTR5q7iqqveywDRT5LWn04-sIzBVEkpqFPqEEyeyXZbiEN4-J9Ojs=s72-c
Syahdan Dev Blog
https://syahdandev.blogspot.com/2025/03/cara-mengamankan-script-nodejs-agar.html
https://syahdandev.blogspot.com/
https://syahdandev.blogspot.com/
https://syahdandev.blogspot.com/2025/03/cara-mengamankan-script-nodejs-agar.html
true
6341435550051226882
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content