Բովանդակության աղյուսակ

JavaScript-ը ժամանակակից ծրագրավորման լեզու է, որը ստեղծում է կայքի լայնածավալ եւ դինամիկ բովանդակություն: Հետաքրքիր է, որ այն աշխատում է մեկ թելի սկզբունքով։ Դա նշանակում է, որ դուք կարող եք միաժամանակ կատարել միայն մեկ վիրահատություն։ Օբյեկտները կարող են ստեղծվել ուղղակիորեն, իսկ փոփոխականները չունեն ֆիքսված ստատիկ տիպեր։

JavaScript-ը հեշտ է շատ վեբ մշակողների համար, եւ դրա կիրառման կոդը հասանելի է օգտատերերի եւ բոլորի կողմից: Սա JavaScript-ի օգտագործման ամենադժվար մասն է վեբ կայքի մշակողների համար։ Այսպիսով, շատ հարձակվողներ կարող են հեշտությամբ մուտք գործել եւ շահագործել կայքի կոդը եւ տվյալների խոցելիությունները, որոնք կարող են վնասել կայքին եւ բիզնեսին։

JavaScript-ի կողմից գեներացված կոդը հաղթահարելու կամ պահպանելու համար մշակողները օգտագործում են JavaScript Obfuscation կոչվող տեխնիկա։ Այս հոդվածում դուք կուսումնասիրեք JavaScript Obfuscator-ը, թե ինչպես կարող եք պաշտպանել եւ պահպանել JS կոդը, եւ JS obfuscator- ի կարեւորությունը:

Կոդի ապահովման գործընթացը, որի ժամանակ մշակողները փոխում կամ փոփոխում են հիմնական կոդը խնդրահարույց ձեւի, որը չի կարող հեշտությամբ հասկանալ մարդկանց կողմից՝ միաժամանակ ապահովելով կոդի ճիշտ կատարումը։ Ի տարբերություն գաղտնագրման (որը պահանջում է բանալին փոփոխված կոդը վերծանելու համար), աղավաղումը չի պահանջում որեւէ բանալին հիմնական կոդը վերակառուցելու համար։ 

Այս գործընթացի հիմնական նպատակն է կանխել կամ դադարեցնել չարտոնված մուտքը, հակադարձ ճարտարագիտությունը եւ մտավոր սեփականության գողությունը։

Obfuscation-ը կարող է ծառայել տարբեր նպատակների եւ օգուտների, որոնց շնորհիվ այն օգտագործվում է, որոնցից մի քանիսը տրված են ստորեւ.

Obfuscation-ը պաշտպանում է ձեր կոդը եւ զգայուն տեղեկատվությունը կիբեր գողերից եւ հարձակվողներից՝ այդպիսով հնարավորություն տալով ձեր նախագծի գաղտնիությունը:

Աղավաղված կոդերը կարող են դժվարացնել հաքերների համար դրանք կարգաբերելը, որպեսզի դրանք օգտագործվեն վնասակար նպատակներով։

Խեղաթյուրումը կապահովի մրցակցային առավելություն՝ ապահովելով սեփական մարտավարության եւ ռազմավարությունների յուրահատուկ իրականացումը։

Որոշ կոդեր ներառում են զգայուն տեղեկատվություն, բանալիներ կամ տրամաբանություն, որոնք կարեւոր են շահագործման համար, բայց չպետք է բացահայտվեն հանրության առջեւ՝ կանխելով ձեր տեղեկատվության արտահոսքը եւ օգնելով տեղեկատվությունը լինել միայն ձեզ համար։

Ստորեւ ներկայացնում ենք JavaScript Obfuscator-ի օրինակը.

JS-ում Hello բառի հիմնական կոդը հետեւյալն է.

function greet(name) {

    վերադարձնել «Ողջույն» + անուն + «!»;

}

Obfuscation-ի գործողությունը վերածում է հետեւյալ կոդը՝

ֆունկցիան _0x2c56(_0x1a73){return 'Ողջույն, '+_0x1a73+'!';}

Երկու կոդերն էլ ունեն նույն իմաստը, եւ դրանց ելքը հանգեցնում է ոչ մի տարբերության, բայց տպագրական տարբերությունը հանգեցնում է կոդի զգալի պաշտպանության։ Բարդ բաները միշտ ավելի դժվար են հասանելի։

JS obfuscation-ի աշխատանքը ներկայացված է ստորեւ

Ամբողջ գործընթացը հետեւում է որոշ քայլերի, ինչպիսիք են 

Այստեղ նկարագրական փոփոխականների անունների փոխարինումը կատարվում է անիմաստ տողերով (օրինակ՝ օգտվողի անունը դառնում է a1b2c3)

Ստորեւ բերված է օրինակ՝ ավելի լավ հասկանալու համար

Բնօրինակ կոդը:

function calculateTotal(price, tax) {

    վերադարձի գին + (գինը * հարկ),

}

Այս կոդը կարող է այսպիսի տեսք ունենալ խառնաշփոթից հետո

Խեղաթյուրված կոդ.

ֆունկցիա _0x45a1(x,y){return x+(x*y);}

Այն հայտնի է նաեւ որպես լարային գաղտնագրում։ Դա գործընթաց է, որի միջոցով զգայուն տվյալները, ինչպիսիք են URL-ները կամ API բանալիները, կոդավորվում են կոդի ներսում տողերով։ Ստորեւ ներկայացնում ենք լարային գաղտնագրման օրինակ.

Բնօրինակ կոդը:

const apiKey = "ABC123";

Աղավաղված տարբերակը տրված է ստորեւ։

Խեղաթյուրված կոդ.

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

 Կարճ ձեւով, որը հայտնի է որպես կոդի հարթեցում։ Կոդի բարդ կառուցվածքները պարզեցված են, մեկնաբանությունները հեռացվում են՝ հնարավորինս նվազեցնելու ընթեռնելիությունը։

Բնօրինակ կոդը:

Պարզ կոդը կարող է այսպիսի տեսք ունենալ

function checkAccess(user) {

    if (user.role === "admin") վերադարձնում է true;

    այլապես վերադարձնել կեղծ;

}

Obfuscated Code:

ֆունկցիա _0x1a2b(_0x3c4d) {

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

}

 Ընթեռնելիությունը խիստ նվազում է, ինչպես նկատվում է վերը ներկայացված երկու կոդերի տարբերությունից։

Այն նման է կոդի հարթեցման եւ վերահսկողության հոսքի փոփոխության. Դա սկզբնական կոդին անիմաստ կոդի հատվածների ավելացումն է, որպեսզի այն ավելի քիչ ընթեռնելի լինի։

function validateInput(input) {

    if (input.length > 5) return true;

    այլապես վերադարձնել կեղծ;

    // Մեռած կոդը ներքեւում

    const x = 10;

    console.log(«Սա երբեք չի վազում»);

}

Այս կոդի ներդրման տարբերակը (Obfuscated) այս կոդի տեսքը հետեւյալ է .

function validateInput(input) {

    if (input.length > 5) {

        // Մեռած կոդ, որը ոչ մի օգտակար բան չի անում

        const unusedVar = Math.random() * 100;

        console.log("Սա մեռած կոդի մի մասն է. ", unusedVar);

        վերադառնալ ճշմարիտ;

    } else {

        // Ավելի շատ մեռած կոդը ներքեւում

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

        if (fakeCondition) {

            console.log(«Այս պայմանը կեղծ է եւ ոչ կարեւոր»);

        }

        վերադարձը կեղծ է;

    }

    // Անհասանելի մեռած կոդ

    const x = 10;

    const y = 20;

    console.log("Սա երբեք չի մահապատժի, բայց շփոթեցնում է հարձակվողներին՝ ", x + y);

}

JS-ի հակակարգաբերման տեխնիկան եզակի է եւ ներառում է debugger հայտարարություններ, կոնսոլների հայտնաբերում եւ ժամանակային հարձակումներ՝ կոդին եւ կարգաբերմանը խոչընդոտելու համար։

setInterval(function(){

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

        alert("Debugger detected!");

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

    }

}, 1000);

Նույն կոդը, երբ փոփոխվում է աղավաղված տարբերակի մեջ՝ օգտագործելով JS obfuscation գործիքը։ Այն ավելի դժվար է հասկանալ եւ վերլուծել՝ օգտագործելով հակա-կարգաբերման լրացուցիչ շերտ։

Խեղաթյուրված կոդ.

(ֆունկցիա () {

    var _0x3c87 = ['_commandLineAPI', 'անորոշ', 'about:blank'];

    (ֆունկցիա (_0x4d1b99, _0x1ea782) {

        var _0x223b1b = ֆունկցիա (_0x234219) {

            while (--_0x234219) {

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

            }

        };

        _0x223b1b(++_0x1ea782);

    }(_0x3c87, 0x18f));

    var _0x4a68 = ֆունկցիա (_0x4d1b99, _0x1ea782) {

        _0x4d1b99 = _0x4d1b99 - 0x0;

        var _0x223b1b = _0x3c87[_0x4d1b99];

        վերադարձ _0x223b1b;

    };

    setInterval(function () {

        if (typeof console[_0x4a68('0x0')] !== _0x4a68('0x1')) {

            alert('Debugger detected!');

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

        }

    }, 0x3e8);

})();

Սրանք ընդամենը մի քանի պարզ քայլեր էին, թե ինչպես կարելի է կոդի պարզ եւ էական մասը փոխակերպել ամենաբարձր բարդության մակարդակի՝ դարձնելով այն շատ առաջադեմ եւ բարդ կոդի՝ օգտագործելով աղավաղման գործիք։

JS-ում խեղաթյուրման լավագույն պրակտիկայի համար կան մի քանի առաջարկներ, որոնք կկիրառեն այն։

Շահագործում վստահելի obfuscators, ինչպիսիք են JavaScript Obfuscator կամ UglifyJS հեռացնել ամուր փոխակերպումներ.  

Obfuscation-ը պաշտպանության ստարտափ շերտն է։ Այն զուգակցելով տարբեր մեթոդների հետ, ինչպիսիք են խիստ թեստավորումը, անվտանգ կոդավորման պրակտիկաները եւ այլն, կարող է ավելացնել անխախտ պաշտպանություն ձեր նախագծին:

Պահպանեք սկզբնական կոդի հստակ տարբերակը եւ կանոնադրությունը հետագա կարգաբերման համար: Այն թույլ կտա ձեզ մուտք գործել ձեր սկզբնական կոդը՝ այդպիսով հեշտացնելով փոփոխության գործընթացը։

Մնացեք թարմացված զարգացող սպառնալիքների մասին եւ համապատասխանաբար փոփոխեք ձեր խեղաթյուրման մարտավարությունը։

Խեղաթյուրման գաղափարը առաջ եկավ կիբեռհարձակումներից ձեր նախագծերի էթիկական պաշտպանության զգացումով։ Այսպիսով, դրա չարաշահումը կարող է հանգեցնել վատ հանգամանքների, ինչպիսիք են.

Կիբեռհանցագործները հաճախ օգտագործում են աղավաղման տեխնիկան՝ իրենց վտանգավոր սցենարները կամ քրեական գրանցումները թաքցնելու համար։

Obfuscation-ը կարող է նաեւ ներխուժել մարդու գաղտնիություն, հետեւել սցենարներին եւ այլն։ Միշտ կարեւոր է հաշվի առնել նման մեթոդների ճիշտ օգտագործումը։ Նման բաների միջեւ հավասարակշռություն պահպանելը աղավաղման առաջին քայլն է։

Թեեւ ձեր կոդը եւ նախագծերը պաշտպանելու համար խեղաթյուրման օգտագործումը շատ օգտակար է, այն հիմար չէ։ Այն ունի որոշ սահմանափակումներ, որոնք կարող են նյարդայնացնել ձեզ այն օգտագործելիս։ Նրա չբավարարված բացերից մի քանիսը քննարկվում են ստորեւ.

Եթե ձեր կոդը խեղաթյուրված է անհրաժեշտությունից ավելի, ապա դա բացասաբար կազդի ձեր կոդի աշխատաժամանակի վրա, հիմնականում, եթե օգտագործվում են դինամիկ գեներացում կամ ավելորդ կոդի մեթոդներ։

Փորձառու հաքերները կամ հարձակվողները կարող են օգտագործել խեղաթյուրում ձեր արդեն աղավաղված կոդի վրա՝ ի վերջո չթողնելով ձեր կոդի պաշտպանությունը։

Խեղաթյուրված կոդը միշտ դժվար է կարգաբերել, պահպանել կամ զարգացնել, քանի որ ավելացվում են անհարկի տողեր, որոնք օգտագործվում են դրա պաշտպանության համար։ Դա ավելի դժվար է ծրագրավորողների համար, ովքեր չեն եղել սկզբնական կոդի եւ աղավաղված կոդի մշակման թիմի անդամ։

Հատուկ աղավաղման մեթոդները հասանելի չեն բոլոր բրաուզերներում կամ միջավայրերում, այդպիսով մեծացնելով տեխնիկական խնդիրների հավանականությունը կոդի ելքում կամ աշխատանքում։

JavaScript obfuscation-ը հզոր եւ օգտակար գործիք է գողությունից, հաքերներից, հարձակվողներից, խեղաթյուրումից եւ հակադարձ ճարտարագիտությունից պաշտպանելու համար: Թեեւ դա պաշտպանության վահան է ձեր զգայուն տեղեկատվության եւ մտավոր սեփականության համար, որը պահպանվում է ձեր համակարգչում կոդավորմամբ, այն մշտական կամ անպարտելի լուծում չէ անվտանգության համար:

 Կառուցապատողը չպետք է ապավինի պարզապես մթագնմանը։ Հասկանալով եւ ձեռք բերելով բավարար գիտելիքներ դրա տեխնիկայի, առավելությունների եւ սահմանափակումների մասին, մշակողները կարող են այն դարձնել ավելի արժեքավոր եւ արդյունավետ ձեր կոդի վերջնական պաշտպանության համար:

Թեեւ այն ունի որոշ առավելություններ, սահմանափակումներ եւ այն ամենը, ինչ պետք է գոյություն ունենա գործընթացին կամ տեխնիկային, նրա իրական ուժը կայանում է նրանում, որ այն շերտավոր պաշտպանական ռազմավարության մի մասն է; Դուք պետք է բավականաչափ պարապեք, որպեսզի այն ավելի արդյունավետ, օգտակար եւ արդյունավետ լինի ձեզ համար, քան որեւէ մեկը։ Այն օգնում է ապահովել ձեր JavaScript կոդի ամբողջականությունը, գաղտնիությունը եւ հուսալիությունը անընդհատ զարգացող թվային լանդշաֆտում: 

Կարճ ասած, այն գործիք է, որը կօգնի ձեզ պահպանել ձեր գաղտնիությունը եւ մոտիվացնում է մտածել ձեր տեղեկատվությունը պաշտպանելու ավելի արդյունավետ ուղիների մասին։

Ձեր վեբ մշակումը օպտիմալացնելու համար ավելի շատ գործիքների համար ստուգեք.

Անվտանգության լրացուցիչ գործիքների համար այցելեք UrwaTools Security բաժին:

UrwaTools Editorial

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

Լրատու

Մնացեք տեղեկացված մեր նորագույն գործիքների մասին