Садржај
JavaScript je moderan programski jezik koji stvara ogroman i dinamičan sadržaj veb sajta. Zanimljivo je da radi na principu jednog navoja. To znači da možete izvršiti samo jednu operaciju u isto vreme. Objekti se mogu napraviti direktno, a varijable nemaju fiksne statičke tipove.
JavaScript je jednostavan za mnoge veb programere, a njegov aplikativni kod je dostupan korisnicima i bilo kome. To je najizazovniji deo korišćenja JavaScript-a za programere veb stranica. Na ovaj način, mnogi napadači mogu lako pristupiti i iskoristiti kod veb sajta i ranjivosti podataka koji mogu naškoditi veb lokaciji i poslovanju.
Da bi prevazišli ili sačuvali kod generisan JavaScript-om, programeri koriste tehniku koja se zove JavaScript Obfuscation. U ovom članku ćete istražiti JavaScript Obfuscator, kako možete zaštititi i sačuvati JS kod i važnost JS obfuscator-a.
Šta je JavaScript obfuskacija?
Proces obezbeđivanja koda, u kojem programeri menjaju ili modifikuju osnovni kod u problematičnu formu koju ljudi ne mogu lako razumeti, a istovremeno obezbeđuju ispravno izvršenje koda. Za razliku od enkripcije (koja zahteva ključ za dekodiranje modifikovanog koda), prikrivanje ne zahteva nikakav ključ za restrukturiranje osnovnog koda.
Osnovna svrha ovog procesa je sprečavanje ili zaustavljanje neovlašćenog pristupa, obrnutog inženjeringa i krađe intelektualne svojine.
Zašto koristiti JavaScript obfuskaciju?
Zamagljivanje može poslužiti u različite svrhe i koristi zbog kojih se koristi, od kojih su neke date u nastavku:
KSNUMKS-Obezbeđenje od krađe
Obfuskacija štiti vaš kod i osetljive informacije od sajber lopova i napadača, čime se omogućava privatnost vašeg projekta.
2-Temper Prevencija
Obfuscated kodovi mogu otežati hakerima da otklone greške, tako da se mogu koristiti u zlonamerne svrhe.
3-Očuvanje poslovnih interesa
Zamagljivanje će osigurati konkurentsku prednost čuvanjem jedinstvenih implementacija nečijih taktika i strategija.
4-Zaštita osetljivih informacija
Neki kod uključuje osetljive informacije, ključeve ili logiku koji su važni za rad, ali ne bi trebalo da budu izloženi javnosti, sprečavajući curenje vaših informacija i pomažući da informacije budu samo za vas.
Sledi primer JavaScript Obfuscator-a:
Osnovni kod reči Hello u JS-u izgleda ovako:
function greet(ime) {
povratak "Zdravo, " + ime + "!";
}
Operacija zamagljivanja pretvara sledeći kod u ovo:
function _0x2c56(_0x1a73){return 'Zdravo, '+_0x1a73+'!';}
Oba koda imaju isto značenje, i njihov izlaz ne rezultira razlikom, ali greška u kucanju rezultira značajnom zaštitom koda. Složenim stvarima je uvek teže pristupiti.
Kako funkcioniše JavaScript prikrivanje?
Rad JS obfuskacije je prikazan ispod
Ceo proces sledi neke korake kao što su
1-Promenljiva preimenovanje
Ovde, zamena opisnih imena promenljivih se vrši besmislenim nizovima (npr. korisničko ime postaje a1b2c3)
Primer je dat u nastavku da bi se bolje razumelo
Originalni kod:
function calculateTotal(cena, porez) {
povratna cena + (cena * porez);
}
Ovaj kod može izgledati ovako nakon zamagljivanja
Obfuscated kod:
funkcija _0x45a1(x,y){return x+(x*y);}
KSNUMKS-String i kodiranje brojeva
Poznat je i kao string enkripcija. To je proces kojim su osetljivi podaci kao što su URL-ovi ili API ključevi kodirani nizovima unutar koda. Sledi primer šifrovanja stringova:
Originalni kod:
const apiKey = "ABC123";
Zamagljena verzija je data ispod.
Obfuscated kod:
const _0x3d2a = "\x41\x42\x43\x31\x32\x33";
3-Kontrola protoka ravnanje
U kratkom obliku poznatom kao izravnavanje koda. Složene strukture koda su pojednostavljene komentari su uklonjeni kako bi se smanjila čitljivost što je više moguće.
Originalni kod:
Jednostavan kod može izgledati ovako
function checkAccess(user) {
if (user.role === "admin") vrati true;
inače se vraćaju lažno;
}
Obfuscated Code:
funkcija _0x1a2b(_0x3c4d) {
return _0x3c4d["\x72\x6f\x6c\x65"] === "\x61\x64\x6d\x69\x6e" ? !0x0 : !0x1;
}
Čitljivost je znatno smanjena, kao što se vidi iz razlike između dva gore navedena koda.
Umetanje 4-mrtvog koda
To je slično kod izravnavanje i kontrola protoka Promena. To je dodavanje besmislenih isječaka koda originalnom kodu kako bi ga učinili manje čitljivim.
function validateInput(input) {
if (input.length > 5) return true;
inače se vraćaju lažno;
// Mrtav kod ispod
const x = 10;
console.log("Ovo se nikad ne pokreće");
}
Verzija umetanja mrtvog koda (obfuscated) ovog koda izgleda ovako:
function validateInput(input) {
if (input.length > 5) {
// Mrtav kod koji ne radi ništa korisno
const unusedVar = Math.random() * 100;
console.log("Ovo je deo mrtvog koda: ", unusedVar);
vratite istinito;
} else {
// Više mrtvog koda ispod
neka fakeCondition = input.includes("tajna");
if (fakeCondition) {
console.log("Ovo stanje je lažno i irelevantno");
}
povratak lažan;
}
// Nedostupan mrtvi kod
const x = 10;
const y = 20;
console.log("Ovo se nikada neće izvršiti, ali zbunjuje napadače: ", x + y);
}
5.Anti-otklanjanje grešaka tehnike
Tehnika protiv otklanjanja grešaka u JS-u je jedinstvena i uključuje izjave za otklanjanje grešaka, detekciju konzole i vremenske napade kako bi se ometalo kod i otklanjanje grešaka.
setInterval(funkcija(){
if (typeof console._commandLineAPI !== 'nedefinisano') {
upozorenje("Debugger otkriven!");
window.location.href = "o:prazno";
}
}, 1000);
Isti kod, kada je modifikovan u zamagljenu verziju pomoću JS alata za obfuskaciju. Postalo je teže razumeti i analizirati pomoću dodatnog sloja protiv otklanjanja grešaka.
Obfuscated kod:
(funkcija) {
var _0x3c87 = ['_commandLineAPI', 'nedefinisan', 'oko:prazno'];
(funkcija (_0x4d1b99, _0x1ea782) {
var _0x223b1b = funkcija (_0x234219) {
while (--_0x234219) {
_0x4d1b99['push'](_0x4d1b99['shift']());
}
};
_0x223b1b(++_0x1ea782);
}(_0x3c87, 0x18f));
var _0x4a68 = funkcija (_0x4d1b99, _0x1ea782) {
_0x4d1b99 = _0x4d1b99 - 0x0;
var _0x223b1b = _0x3c87[_0x4d1b99];
povratak _0x223b1b;
};
setInterval(funkcija () {
if (typeof console[_0x4a68('0x0')] !== _0x4a68('0x1')) {
alert('Debugger detected!');
window['location']['href'] = _0x4a68('0x2');
}
}, 0x3e8);
})();
Ovo su bili samo neki od jednostavnih koraka (tehnika) kako se jednostavan i suštinski deo koda može pretvoriti u najviši nivo težine, čineći ga veoma naprednim i složenim kodom pomoću alata za prikrivanje.
Predlozi za praksu za prikrivanje u JavaScript-u
Za najbolju praksu zamagljivanja u JS-u, postoji nekoliko predloga da se to sprovede u praksi.
Izbor pouzdanih alata
Rad pouzdanih obfuskatora kao što su JavaScript, Obfuscator ili UglifiJS za uklanjanje robusnih transformacija.
KSNUMKS-Obfuskacija sa drugim merama bezbednosti
Zamagljivanje je početni sloj odbrane. Uparivanje sa različitim tehnikama kao što su rigorozno testiranje, sigurne prakse kodiranja itd. Može dodati neraskidivu zaštitu vašem projektu.
3-kod Dokumentacija
Sačuvajte jasnu verziju originalnog koda i čarter za buduće otklanjanje grešaka. To će vam omogućiti pristup originalnom kodu, što će olakšati proces izmjene.
4-Aktivnost
Budite u toku sa novim pretnjama i modifikujte svoju taktiku zamagljivanja u skladu s tim.
Etička razmatranja
Ideja o zamagljivanju došla je do osećaja etičke zaštite vaših projekata od sajber napada. Dakle, njegova zloupotreba može dovesti do loših okolnosti, kao što su:
KSNUMKS-Razmeštanje malvera
Sajber kriminalci često koriste tehniku zamagljivanja kako bi sakrili svoje opasne skripte ili krivične dosijee.
KSNUMKS-Obmanjujuće prakse
Zamagljivanje takođe može narušiti nečiju privatnost, pratiti skripte, itd. Uvek je neophodno razmotriti pravilnu upotrebu takvih tehnika. Održavanje ravnoteže među takvim stvarima je prvi korak ka izvođenju zamagljivanja.
Ograničenja zamagljivanja
Iako je upotreba zamagljivanja za zaštitu vašeg koda i projekata veoma korisna, nije sigurna. Ima neka ograničenja koja vas mogu iritirati dok ga koristite. Neke od njegovih nezadovoljenih praznina su razmotrene u nastavku:
1-Uticaj na performanse:
Ako je vaš kod zamagljen više nego što je potrebno, to će negativno uticati na vreme izvođenja vašeg koda, uglavnom ako se koriste dinamičko generisanje ili suvišne metode koda.
KSNUMKS-Nedostatak apsolutne sigurnosti:
Stručni hakeri ili napadači mogu da koriste prikrivanje na vašem već prikrivenom kodu, na kraju ne ostavljajući nikakvu zaštitu vašeg koda.
Izazovi za otklanjanje grešaka KSNUMKS:
Zamagljeni kod je uvek nezgodno za otklanjanje grešaka, održavanje ili razvoj zbog dodavanja nepotrebnih linija koje se koriste za njegovu zaštitu. To je još teže za programere koji nisu bili deo razvojnog tima originalnog koda i zamagljenog koda.
4-Kompatibilnost pitanja:
Specifične tehnike zamagljivanja nisu dostupne u svim pretraživačima ili okruženjima, čime se povećavaju šanse za tehničke probleme u izlazu ili radu koda.
Zakljuиak
JavaScript prikrivanje je moćan i koristan alat za zaštitu nečijeg koda od krađe, hakera, napadača, neovlašćenog i obrnutog inženjeringa. Iako je to zaštitni štit za vaše osetljive informacije i intelektualnu svojinu sačuvanu u vašem računaru kodiranjem, to nije trajno ili nepobedivo rešenje za bezbednost.
Programer ne sme da se oslanja samo na zamagljivanje. Razumevanjem i dobijanjem dovoljno znanja o svojim tehnikama, prednostima i ograničenjima, programeri mogu da ga učine vrednijim i efikasnijim za krajnju zaštitu vašeg koda.
Iako ima neke prednosti, ograničenja i sve što proces ili tehnika treba da postoji, njegova prava moć leži u činjenici da je deo slojevite strategije odbrane; Morate da vežbate dovoljno da biste ga učinili efikasnijim, korisnijim i produktivnijim za vas nego bilo ko drugi. Pomaže da se osigura integritet, poverljivost i pouzdanost vašeg JavaScript koda u digitalnom pejzažu koji se stalno razvija.
Ukratko, to je alat koji će vam pomoći da održite svoju privatnost i motiviše vas da razmislite o efikasnijim načinima zaštite vaših podataka.
Za više alata za optimizaciju vašeg veb razvoja, pogledajte:
Za više bezbednosnih alata, posetite UrvaTools bezbednosni odeljak.