Садржај

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.

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.

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

Obfuskacija štiti vaš kod i osetljive informacije od sajber lopova i napadača, čime se omogućava privatnost vašeg projekta.

Obfuscated kodovi mogu otežati hakerima da otklone greške, tako da se mogu koristiti u zlonamerne svrhe.

Zamagljivanje će osigurati konkurentsku prednost čuvanjem jedinstvenih implementacija nečijih taktika i strategija.

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.

Rad JS obfuskacije je prikazan ispod

Ceo proces sledi neke korake kao što su 

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);}

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";

 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.

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);

}

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.

Za najbolju praksu zamagljivanja u JS-u, postoji nekoliko predloga da se to sprovede u praksi.

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

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.

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.

Budite u toku sa novim pretnjama i modifikujte svoju taktiku zamagljivanja u skladu s tim.

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:

Sajber kriminalci često koriste tehniku zamagljivanja kako bi sakrili svoje opasne skripte ili krivične dosijee.

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.

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:

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.

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.

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.

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.

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.

UrwaTools Editorial

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

Newsletter

Будите у току са нашим најновијим алатима