Sadržaj

JavaScript je moderan programski jezik koji stvara ogroman i dinamičan sadržaj web stranice. Zanimljivo je da djeluje na principu jednostrukog navoja. To znači da možete izvoditi samo jednu operaciju u isto vrijeme. Objekti se mogu izrađivati izravno, a varijable nemaju fiksne statičke tipove.

JavaScript je jednostavan za mnoge web programere, a njegov aplikacijski kod dostupan je korisnicima i svima. To je najizazovniji dio korištenja JavaScripta za programere web stranica. Na taj način mnogi napadači mogu lako pristupiti i iskoristiti kod web stranice i ranjivosti podataka koje mogu naštetiti web stranici i poslovanju.

Kako bi prevladali ili spremili kod generiran JavaScriptom, programeri koriste tehniku koja se zove JavaScript Obfuscation. U ovom ćete članku istražiti JavaScript Obfuscator, kako možete zaštititi i spremiti JS kod te važnost JS obfuscatora.

Proces osiguranja koda, u kojem programeri mijenjaju ili modificiraju temeljni kod u problematičan oblik koji ljudi ne mogu lako razumjeti, a istovremeno osiguravaju ispravno izvršavanje koda. Za razliku od enkripcije (koja zahtijeva ključ za dekodiranje modificiranog koda), prikrivanje ne zahtijeva nikakav ključ za restrukturiranje osnovnog koda. 

Glavna svrha ovog procesa je spriječiti ili zaustaviti neovlašteni pristup, obrnuti inženjering i krađu intelektualnog vlasništva.

Zamagljivanje može poslužiti u različite svrhe i koristi zbog kojih se koristi, od kojih su neke dane u nastavku:

Prikrivanje štiti vaš kod i osjetljive podatke od cyber lopova i napadača, omogućujući tako privatnost vašeg projekta.

Prikriveni kodovi mogu hakerima otežati otklanjanje pogrešaka kako bi se mogli koristiti u zlonamjerne svrhe.

Prikrivanje će osigurati konkurentsku prednost zaštitom jedinstvenih implementacija nečijih taktika i strategija.

Neki kod uključuje osjetljive informacije, ključeve ili logiku koji su važni za rad, ali ne bi trebali biti izloženi javnosti, sprječavajući curenje vaših podataka i pomažući da informacije budu samo za vas.

Slijedi primjer JavaScript obfuscatora:

Osnovni kod riječi Hello u JS-u izgleda ovako:

funkcija pozdrav(ime) {

    vratite "Zdravo, " + ime + "!";

}

Operacija prikrivanja pretvara sljedeći kod u ovo:

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

Oba koda imaju isto značenje, a njihov izlaz ne rezultira razlikom, ali razlika u pogrešci pri upisu rezultira značajnom zaštitom koda. Složenim stvarima uvijek je teže pristupiti.

Rad JS prikrivanja prikazan je u nastavku

Cijeli proces slijedi neke korake kao što su 

Ovdje se zamjena opisnih naziva varijabli vrši besmislenim nizovima (npr. korisničko ime postaje a1b2c3)

Primjer je dan u nastavku kako bi se bolje razumjelo

Izvorni kod:

funkcija calculateTotal(cijena, porez) {

    povratna cijena + (cijena * porez);

}

Ovaj kod može izgledati ovako nakon prikrivanja

Prikriveni kod:

funkcija _0x45a1(x,y){return x+(x*y);}

Također je poznata kao enkripcija nizova. To je proces kojim se osjetljivi podaci kao što su URL-ovi ili API ključevi kodiraju nizovima unutar koda. Slijedi primjer šifriranja nizova:

Izvorni kod:

const apiKey = "ABC123";

Prikrivena verzija dana je u nastavku.

Prikriveni kod:

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

 U kratkom obliku poznatom kao izravnavanje koda. Složene strukture koda su pojednostavljene komentari se uklanjaju kako bi se što više smanjila čitljivost.

Izvorni kod:

Jednostavan kod može izgledati ovako 

function checkAccess(user) {

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

    inače se vrati lažno;

}

Prikriveni kod:

funkcija _0x1a2b(_0x3c4d) {

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

}

 Čitljivost je znatno smanjena, što se vidi iz razlike između dva gore navedena koda.

Slično je izravnavanju koda i promjeni tijeka kontrole. To je dodavanje besmislenih isječaka koda izvornom kodu kako bi ga učinili manje čitljivim.

function validateInput(input) {

    if (input.length > 5) return true;

    inače se vrati lažno;

    // Mrtvi kod ispod

    const x = 10;

    console.log("Ovo nikad ne trči");

}

Verzija umetanja mrtvog koda (prikrivena) ovog koda izgleda  ovako:

function validateInput(input) {

    if (ulaz.duljina > 5) {

        // Mrtav kod koji ne čini ništa korisno

        const unusedVar = Math.random() * 100;

        console.log("Ovo je dio mrtvog koda: ", unusedVar);

        vratiti istinito;

    } else {

        // Više mrtvog koda u nastavku

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

        if (fakeCondition) {

            console.log("Ovo stanje je lažno i nevažno");

        }

        vratiti netočno;

    }

    // Nedostupan mrtvi kod

    const x = 10;

    const y = 20;

    console.log("Ovo se nikada neće izvršiti, ali zbunjuje napadače: ", x + y);

}

Tehnika protiv otklanjanja pogrešaka u JS-u jedinstvena je i uključuje izjave programa za ispravljanje pogrešaka, otkrivanje konzole i napade na mjerenje vremena kako bi se ometalo kod i otklanjanje pogrešaka.

setInterval(function(){

    if (typeof console._commandLineAPI !== 'nedefinirano') {

        upozorenje("Otkriven program za ispravljanje pogrešaka!");

        window.location.href = "about:blank";

    }

}, 1000);

Isti kod, kada je modificiran u prikrivenu verziju pomoću JS alata za prikrivanje. Postalo ga je teže razumjeti i analizirati korištenjem dodatnog sloja protiv otklanjanja pogrešaka.

Prikriveni kod:

(funkcija () {

    var _0x3c87 = ['_commandLineAPI', 'nedefinirano', 'oko:prazno'];

    (funkcija (_0x4d1b99, _0x1ea782) {

        var _0x223b1b = funkcija (_0x234219) {

            dok (--_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('Otkriven program za ispravljanje pogrešaka!');

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

        }

    }, 0x3e8);

})();

Ovo su bili samo neki od jednostavnih koraka (tehnika) kako se jednostavan i bitan dio koda može pretvoriti u najvišu razinu težine, čineći ga vrlo naprednim i složenim kodom pomoću alata za prikrivanje.

Za najbolju praksu zamagljivanja u JS-u, postoji nekoliko prijedloga da se to primijeni u praksi.

Rad pouzdanih obfuskatora kao što su JavaScript Obfuscator ili UglifyJS za uklanjanje robusnih transformacija.  

Prikrivanje je početni sloj obrane. Uparivanje s različitim tehnikama kao što su rigorozno testiranje, sigurne prakse kodiranja itd. može dodati neprobojnu zaštitu vašem projektu.

Spremite jasnu verziju izvornog koda i zakup za buduće otklanjanje pogrešaka. Omogućit će vam pristup izvornom kodu, čime će se olakšati postupak izmjene.

Budite u tijeku s novim prijetnjama i u skladu s tim modificirajte svoje taktike zamagljivanja.

Ideja zamagljivanja došla je do osjećaja etičke zaštite vaših projekata od kibernetičkih napada. Dakle, njegova zlouporaba može dovesti do loših okolnosti, kao što su:

Kibernetički kriminalci često koriste tehniku prikrivanja kako bi prikrili svoje opasne skripte ili kaznenu evidenciju.

Zamagljivanje također može narušiti nečiju privatnost, pratiti skripte itd. Uvijek je bitno razmotriti pravilnu uporabu takvih tehnika. Održavanje ravnoteže među takvim stvarima prvi je korak u izvođenju zamagljivanja.

Iako je korištenje prikrivanja za zaštitu vašeg koda i projekata vrlo korisno, nije sigurno. Ima neka ograničenja koja vas mogu iritirati dok ga koristite. U nastavku se raspravlja o nekim od njegovih neispunjenih nedostataka:

Ako je vaš kod prikriven više nego što je potrebno, to će negativno utjecati na vrijeme izvođenja vašeg koda, uglavnom ako se koriste metode dinamičkog generiranja ili suvišnog koda.

Stručni hakeri ili napadači mogu koristiti prikrivanje vašeg već prikrivenog koda, na kraju ne ostavljajući nikakvu zaštitu vašeg koda.

Prikriveni kod uvijek je teško otkloniti pogreške, održavati ili razvijati zbog dodavanja nepotrebnih redaka koji se koriste za njegovu zaštitu. Još je teže programerima koji nisu bili dio razvojnog tima izvornog koda i prikrivenog koda.

Specifične tehnike prikrivanja nisu dostupne u svim preglednicima ili okruženjima, čime se povećavaju šanse za tehničke probleme u izlazu ili radu koda.

JavaScript prikrivanje moćan je i koristan alat za zaštitu nečijeg koda od krađe, hakera, napadača, neovlaštenog mijenjanja i obrnutog inženjeringa. Iako je to zaštitni štit za vaše osjetljive podatke i intelektualno vlasništvo spremljeno na vašem računalu kodiranjem, to nije trajno ili nepobjedivo rješenje za sigurnost.

 Investitor se ne smije oslanjati samo na prikrivanje. Razumijevanjem i stjecanjem dovoljno znanja o njegovim tehnikama, prednostima i ograničenjima, programeri ga mogu učiniti vrijednijim i učinkovitijim za konačnu zaštitu vašeg koda.

Iako ima neke prednosti, ograničenja i sve što je procesu ili tehnici potrebno da bi postojao, njegova prava moć leži u činjenici da je dio slojevite obrambene strategije; Morate vježbati dovoljno da biste ga učinili učinkovitijim, korisnijim i produktivnijim za vas od bilo koga drugog. Pomaže osigurati integritet, povjerljivost i pouzdanost vašeg JavaScript koda u digitalnom krajoliku koji se stalno razvija. 

Ukratko, to je alat koji vam pomaže u održavanju privatnosti i motivira vas da razmislite o učinkovitijim načinima zaštite svojih podataka.

Za više alata za optimizaciju vašeg web razvoja, pogledajte:

Za više sigurnosnih alata posjetite odjeljak Sigurnost UrwaTools.

UrwaTools Editorial

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

Bilten

Ostanite u toku s našim najnovijim alatima