Table of Contents

JavaScript ir mūsdienīga programmēšanas valoda, kas rada plašu un dinamisku mājas lapas saturu. Interesanti, ka tas darbojas pēc viena pavediena principa. Tas nozīmē, ka vienlaikus var veikt tikai vienu darbību. Objektus var izveidot tieši, un mainīgajiem nav fiksētu statisko tipu.

JavaScript ir viegli daudziem tīmekļa izstrādātājiem, un tā lietojumprogrammas kods ir pieejams lietotājiem un ikvienam. Tā ir vissarežģītākā JavaScript izmantošanas daļa vietņu izstrādātājiem. Tādā veidā daudzi uzbrucēji var viegli piekļūt vietnes kodam un datu ievainojamībai, kas var kaitēt vietnei un biznesam, un izmantot to.

Lai pārvarētu vai saglabātu JavaScript ģenerēto kodu, izstrādātāji izmanto paņēmienu, ko sauc par JavaScript Obfuscation. Šajā rakstā jūs izpētīsiet JavaScript Obfuscator, kā jūs varat aizsargāt un saglabāt JS kodu un JS obfuscator nozīmi.

Koda drošības process, kurā izstrādātāji maina vai modificē pamatkodu problemātiskā formā, ko cilvēki nevar viegli saprast, vienlaikus nodrošinot pareizu koda izpildi. Atšķirībā no šifrēšanas (kas prasa atslēgu, lai atšifrētu modificēto kodu), slēpšanai nav nepieciešama nekāda atslēga, lai pārstrukturētu pamatkodu. 

Šī procesa galvenais mērķis ir novērst vai apturēt nesankcionētu piekļuvi, reverso inženieriju un intelektuālā īpašuma zādzību.

Obfuscation var kalpot dažādiem mērķiem un priekšrocībām, kuru dēļ tā tiek izmantota, no kurām dažas ir norādītas zemāk:

Slēpšana aizsargā jūsu kodu un sensitīvu informāciju no kiberzagļiem un uzbrucējiem, tādējādi nodrošinot jūsu projekta konfidencialitāti.

Slēpti kodi var apgrūtināt hakeru atkļūdošanu, lai tos varētu izmantot ļaunprātīgiem mērķiem.

Slēpšana nodrošinās konkurences priekšrocības, aizsargājot savas taktikas un stratēģiju unikālo īstenošanu.

Daži kodi ietver sensitīvu informāciju, atslēgas vai loģiku, kas ir svarīga darbībai, bet nedrīkst tikt atklāta sabiedrībai, novēršot jūsu informācijas noplūdi un palīdzot informācijai būt tikai jums.

Tālāk ir JavaScript Obfuscator piemērs:

Vārda Hello pamatkods JS izskatās šādi:

funkcija greet(nosaukums) {

    atgriezties "Sveiki, " + vārds + "!";

}

Aizsegšanas darbība pārvērš šādu kodu:

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

Abiem kodiem ir vienāda nozīme, un to izvade nerada nekādas atšķirības, bet drukas kļūdu atšķirība rada ievērojamu koda aizsardzību. Sarežģītām lietām vienmēr ir grūtāk piekļūt.

JS slēpšanas darbība ir parādīta zemāk

Viss process notiek šādi: 

Šeit aprakstošo mainīgo nosaukumu aizstāšana tiek veikta ar bezjēdzīgām virknēm (piemēram, lietotājvārds kļūst par a1b2c3)

Tālāk ir sniegts piemērs, lai labāk saprastu

Oriģinālais kods:

funkcija calculateTotal(cena, nodoklis) {

    atgriešanas cena + (cena * nodoklis);

}

Šis kods var izskatīties šādi pēc apslēpšanas

Slēpts kods:

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

To sauc arī par virknes šifrēšanu. Tas ir process, kurā sensitīvi dati, piemēram, URL vai API atslēgas, tiek kodēti ar virknēm kodā. Tālāk ir sniegts virknes šifrēšanas piemērs:

Oriģinālais kods:

const apiKey = "ABC123";

Slēptā versija ir dota zemāk.

Slēpts kods:

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

 Īsā formā pazīstams kā koda saplacināšana. Sarežģītas koda struktūras ir vienkāršotas, komentāri tiek noņemti, lai pēc iespējas samazinātu lasāmību.

Oriģinālais kods:

Vienkāršs kods var izskatīties šādi 

funkcija checkAccess(lietotājs) {

    if (user.role === "admin") atgriež true;

    citādi atgriezties nepatiesi;

}

Slēpts kods:

funkcija _0x1a2b(_0x3c4d) {

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

}

 Lasāmība ir ievērojami samazināta, kā redzams no atšķirības starp diviem iepriekš minētajiem kodiem.

Tas ir līdzīgs koda saplacināšanai un kontroles plūsmas izmaiņām. Tā ir bezjēdzīgu koda fragmentu pievienošana oriģinālajam kodam, lai padarītu to mazāk lasāmu.

funkcija validateInput(ievade) {

    if (input.length > 5) atgriež true;

    citādi atgriezties nepatiesi;

    // Mirušais kods zemāk

    const x = 10;

    console.log("Tas nekad nedarbojas");

}

Šī koda mirušā koda ievietošanas versija (Obfuscated) izskatās  šādi:

funkcija validateInput(ievade) {

    if (input.length > 5) {

        // Miris kods, kas nedara neko noderīgu

        const unusedVar = Math.random() * 100;

        console.log("Šī ir daļa no mirušā koda: ", unusedVar);

        atgriešanās true;

    } citādi {

        // Vairāk mirušā koda zemāk

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

        if (fakeCondition) {

            console.log("Šis nosacījums ir viltus un nebūtisks");

        }

        atgriešanās nepatiesa;

    }

    // Nesasniedzams mirušais kods

    const x = 10;

    const y = 20;

    console.log("Tas nekad neizpildīs, bet mulsina uzbrucējus: ", x + y);

}

JS pretatkļūdošanas tehnika ir unikāla un ietver atkļūdotāja paziņojumus, konsoles atklāšanu un laika uzbrukumus, lai kavētu kodu un atkļūdošanu.

setInterval(funkcija(){

    if (console._commandLineAPI tips !== 'nedefinēts') {

        brīdinājums("Konstatēts atkļūdotājs!");

        window.location.href = "par:tukšs";

    }

}, 1000);

Tas pats kods, kad tas tiek modificēts slēptā versijā, izmantojot JS slēpšanas rīku. To ir kļuvis grūtāk saprast un analizēt, izmantojot papildu pretatkļūdošanas slāni.

Slēpts kods:

(funkcija () {

    var _0x3c87 = ['_commandLineAPI', 'nedefinēts', 'par:tukšs'];

    (funkcija (_0x4d1b99, _0x1ea782) {

        var _0x223b1b = funkcija (_0x234219) {

            kamēr (--_0x234219) {

                _0x4d1b99['push'](_0x4d1b99['shift']());

            }

        };

        _0x223b1b(++_0x1ea782);

    }(_0x3c87, 0x18f));

    var _0x4a68 = funkcija (_0x4d1b99, _0x1ea782) {

        _0x4d1b99 = _0x4d1b99 - 0x0;

        var _0x223b1b = _0x3c87[_0x4d1b99];

        atgriešanās _0x223b1b;

    };

    setInterval(funkcija () {

        if (konsoles tips[_0x4a68('0x0')] !== _0x4a68('0x1')) {

            alert('Atkļūdotājs noteikts!');

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

        }

    }, 0x3e8);

})();

Tie bija tikai daži no vienkāršajiem soļiem (paņēmieniem), kā vienkāršu un būtisku koda gabalu var pārvērst visaugstākajā grūtības pakāpē, padarot to par ļoti progresīvu un sarežģītu kodu, izmantojot apslēpšanas rīku.

Lai iegūtu labāko slēpšanas praksi JS, ir vairāki ieteikumi, kā to īstenot praksē.

Uzticamu obfuscatoru, piemēram, JavaScript, Obfuscator vai UglifyJS, darbība, lai noņemtu spēcīgas transformācijas.  

Obfuscation ir starta aizsardzības slānis. Pārī ar dažādām metodēm, piemēram, stingru testēšanu, drošu kodēšanas praksi utt., Jūsu projektam var pievienot nesalaužamu aizsardzību.

Saglabājiet skaidru oriģinālā koda un fraktēšanas versiju turpmākai atkļūdošanai. Tas ļaus jums piekļūt sākotnējam kodam, tādējādi atvieglojot grozījumu procesu.

Sekojiet jaunākajai informācijai par jaunajiem draudiem un attiecīgi modificējiet savu slēpšanas taktiku.

Ideja par apslēpšanu radīja jūsu projektu ētiskās aizsardzības sajūtu pret kiberuzbrukumiem. Tādējādi tā ļaunprātīga izmantošana var izraisīt sliktus apstākļus, piemēram:

Kibernoziedznieki bieži izmanto slēpšanas paņēmienu, lai slēptu savus bīstamos skriptus vai sodāmību.

Slēpšana var arī iejaukties privātumā, izsekot skriptus utt. Vienmēr ir svarīgi apsvērt šādu metožu pareizu izmantošanu. Līdzsvara saglabāšana starp šādām lietām ir pirmais solis, lai veiktu apslēpšanu.

Lai gan slēpšanas izmantošana, lai aizsargātu kodu un projektus, ir ļoti izdevīga, tā nav droša. Tam ir daži ierobežojumi, kas var kairināt jūs lietošanas laikā. Dažas no tās neapmierinātajām nepilnībām ir aplūkotas turpmāk:

Ja jūsu kods ir slēpts vairāk nekā nepieciešams, tas negatīvi ietekmēs jūsu koda izpildlaiku, galvenokārt, ja tiek izmantotas dinamiskās ģenerēšanas vai liekas koda metodes.

Eksperti hakeri vai uzbrucēji var izmantot jau apslēptā koda slēpšanu, galu galā neatstājot jūsu koda aizsardzību.

Slēpto kodu vienmēr ir grūti atkļūdot, uzturēt vai attīstīt, jo tā aizsardzībai tiek pievienotas nevajadzīgas līnijas. Vēl grūtāk ir programmētājiem, kuri nebija daļa no sākotnējā koda un slēptā koda izstrādes komandas.

Specifiskas slēpšanas metodes nav pieejamas visās pārlūkprogrammās vai vidēs, tādējādi palielinot tehnisku problēmu iespējamību koda izvadē vai darbībā.

JavaScript slēpšana ir spēcīgs un izdevīgs rīks, lai aizsargātu savu kodu pret zādzībām, hakeriem, uzbrucējiem, manipulācijām un reverso inženieriju. Lai gan tas ir aizsardzības vairogs jūsu sensitīvajai informācijai un intelektuālajam īpašumam, kas saglabāts jūsu datorā, kodējot, tas nav pastāvīgs vai neuzvarams drošības risinājums.

 Attīstītājs nedrīkst paļauties tikai uz slēpšanu. Izprotot un iegūstot pietiekamas zināšanas par tā paņēmieniem, priekšrocībām un ierobežojumiem, izstrādātāji var padarīt to vērtīgāku un efektīvāku, lai nodrošinātu jūsu koda pilnīgu aizsardzību.

Lai gan tam ir dažas priekšrocības, ierobežojumi un viss, kas procesam vai paņēmienam ir nepieciešams, lai pastāvētu, tā patiesais spēks slēpjas faktā, ka tā ir daļa no slāņainas aizsardzības stratēģijas; Jums ir jāpraktizē pietiekami, lai padarītu to efektīvāku, noderīgāku un produktīvāku jums nekā jebkurš cits. Tas palīdz nodrošināt JavaScript koda integritāti, konfidencialitāti un uzticamību pastāvīgi mainīgajā digitālajā vidē. 

Īsāk sakot, tas ir rīks, kas palīdz saglabāt jūsu privātumu un motivē domāt par efektīvākiem veidiem, kā aizsargāt savu informāciju.

Lai iegūtu vairāk rīku tīmekļa izstrādes optimizēšanai, skatiet:

Lai iegūtu vairāk drošības rīku, apmeklējiet UrwaTools drošības sadaļu.

UrwaTools Editorial

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

Informatīvais biļetens

Esiet lietas kursā par mūsu jaunākajiem rīkiem