Բովանդակության աղյուսակ
JavaScript-ը ժամանակակից ծրագրավորման լեզու է, որը ստեղծում է կայքի լայնածավալ եւ դինամիկ բովանդակություն: Հետաքրքիր է, որ այն աշխատում է մեկ թելի սկզբունքով։ Դա նշանակում է, որ դուք կարող եք միաժամանակ կատարել միայն մեկ վիրահատություն։ Օբյեկտները կարող են ստեղծվել ուղղակիորեն, իսկ փոփոխականները չունեն ֆիքսված ստատիկ տիպեր։
JavaScript-ը հեշտ է շատ վեբ մշակողների համար, եւ դրա կիրառման կոդը հասանելի է օգտատերերի եւ բոլորի կողմից: Սա JavaScript-ի օգտագործման ամենադժվար մասն է վեբ կայքի մշակողների համար։ Այսպիսով, շատ հարձակվողներ կարող են հեշտությամբ մուտք գործել եւ շահագործել կայքի կոդը եւ տվյալների խոցելիությունները, որոնք կարող են վնասել կայքին եւ բիզնեսին։
JavaScript-ի կողմից գեներացված կոդը հաղթահարելու կամ պահպանելու համար մշակողները օգտագործում են JavaScript Obfuscation կոչվող տեխնիկա։ Այս հոդվածում դուք կուսումնասիրեք JavaScript Obfuscator-ը, թե ինչպես կարող եք պաշտպանել եւ պահպանել JS կոդը, եւ JS obfuscator- ի կարեւորությունը:
Ի՞նչ է JavaScript-ի խառնաշփոթը:
Կոդի ապահովման գործընթացը, որի ժամանակ մշակողները փոխում կամ փոփոխում են հիմնական կոդը խնդրահարույց ձեւի, որը չի կարող հեշտությամբ հասկանալ մարդկանց կողմից՝ միաժամանակ ապահովելով կոդի ճիշտ կատարումը։ Ի տարբերություն գաղտնագրման (որը պահանջում է բանալին փոփոխված կոդը վերծանելու համար), աղավաղումը չի պահանջում որեւէ բանալին հիմնական կոդը վերակառուցելու համար։
Այս գործընթացի հիմնական նպատակն է կանխել կամ դադարեցնել չարտոնված մուտքը, հակադարձ ճարտարագիտությունը եւ մտավոր սեփականության գողությունը։
Ինչո՞ւ օգտագործել JavaScript Obfuscation
Obfuscation-ը կարող է ծառայել տարբեր նպատակների եւ օգուտների, որոնց շնորհիվ այն օգտագործվում է, որոնցից մի քանիսը տրված են ստորեւ.
1-Գողության դեմ անվտանգություն
Obfuscation-ը պաշտպանում է ձեր կոդը եւ զգայուն տեղեկատվությունը կիբեր գողերից եւ հարձակվողներից՝ այդպիսով հնարավորություն տալով ձեր նախագծի գաղտնիությունը:
2-Temper կանխարգելում
Աղավաղված կոդերը կարող են դժվարացնել հաքերների համար դրանք կարգաբերելը, որպեսզի դրանք օգտագործվեն վնասակար նպատակներով։
3-Բիզնեսի շահերի պահպանում
Խեղաթյուրումը կապահովի մրցակցային առավելություն՝ ապահովելով սեփական մարտավարության եւ ռազմավարությունների յուրահատուկ իրականացումը։
4-Զգայուն տեղեկատվության պահպանում
Որոշ կոդեր ներառում են զգայուն տեղեկատվություն, բանալիներ կամ տրամաբանություն, որոնք կարեւոր են շահագործման համար, բայց չպետք է բացահայտվեն հանրության առջեւ՝ կանխելով ձեր տեղեկատվության արտահոսքը եւ օգնելով տեղեկատվությունը լինել միայն ձեզ համար։
Ստորեւ ներկայացնում ենք JavaScript Obfuscator-ի օրինակը.
JS-ում Hello բառի հիմնական կոդը հետեւյալն է.
function greet(name) {
վերադարձնել «Ողջույն» + անուն + «!»;
}
Obfuscation-ի գործողությունը վերածում է հետեւյալ կոդը՝
ֆունկցիան _0x2c56(_0x1a73){return 'Ողջույն, '+_0x1a73+'!';}
Երկու կոդերն էլ ունեն նույն իմաստը, եւ դրանց ելքը հանգեցնում է ոչ մի տարբերության, բայց տպագրական տարբերությունը հանգեցնում է կոդի զգալի պաշտպանության։ Բարդ բաները միշտ ավելի դժվար են հասանելի։
Ինչպե՞ս է աշխատում JavaScript Obfuscation-ը։
JS obfuscation-ի աշխատանքը ներկայացված է ստորեւ
Ամբողջ գործընթացը հետեւում է որոշ քայլերի, ինչպիսիք են
1-Փոփոխական անվանափոխում
Այստեղ նկարագրական փոփոխականների անունների փոխարինումը կատարվում է անիմաստ տողերով (օրինակ՝ օգտվողի անունը դառնում է a1b2c3)
Ստորեւ բերված է օրինակ՝ ավելի լավ հասկանալու համար
Բնօրինակ կոդը:
function calculateTotal(price, tax) {
վերադարձի գին + (գինը * հարկ),
}
Այս կոդը կարող է այսպիսի տեսք ունենալ խառնաշփոթից հետո
Խեղաթյուրված կոդ.
ֆունկցիա _0x45a1(x,y){return x+(x*y);}
2-String & Number Encoding
Այն հայտնի է նաեւ որպես լարային գաղտնագրում։ Դա գործընթաց է, որի միջոցով զգայուն տվյալները, ինչպիսիք են URL-ները կամ API բանալիները, կոդավորվում են կոդի ներսում տողերով։ Ստորեւ ներկայացնում ենք լարային գաղտնագրման օրինակ.
Բնօրինակ կոդը:
const apiKey = "ABC123";
Աղավաղված տարբերակը տրված է ստորեւ։
Խեղաթյուրված կոդ.
const _0x3d2a = "\x41\x42\x43\x31\x32\x33";
3-Control հոսքի հարթեցման
Կարճ ձեւով, որը հայտնի է որպես կոդի հարթեցում։ Կոդի բարդ կառուցվածքները պարզեցված են, մեկնաբանությունները հեռացվում են՝ հնարավորինս նվազեցնելու ընթեռնելիությունը։
Բնօրինակ կոդը:
Պարզ կոդը կարող է այսպիսի տեսք ունենալ
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;
}
Ընթեռնելիությունը խիստ նվազում է, ինչպես նկատվում է վերը ներկայացված երկու կոդերի տարբերությունից։
4-Dead Code ներդրում
Այն նման է կոդի հարթեցման եւ վերահսկողության հոսքի փոփոխության. Դա սկզբնական կոդին անիմաստ կոդի հատվածների ավելացումն է, որպեսզի այն ավելի քիչ ընթեռնելի լինի։
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);
}
5. Anti-Debugging մեթոդներ
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);
})();
Սրանք ընդամենը մի քանի պարզ քայլեր էին, թե ինչպես կարելի է կոդի պարզ եւ էական մասը փոխակերպել ամենաբարձր բարդության մակարդակի՝ դարձնելով այն շատ առաջադեմ եւ բարդ կոդի՝ օգտագործելով աղավաղման գործիք։
Կիրառական առաջարկներ JavaScript-ում Obfuscation-ի համար
JS-ում խեղաթյուրման լավագույն պրակտիկայի համար կան մի քանի առաջարկներ, որոնք կկիրառեն այն։
Հուսալի գործիքների ընտրություն
Շահագործում վստահելի obfuscators, ինչպիսիք են JavaScript Obfuscator կամ UglifyJS հեռացնել ամուր փոխակերպումներ.
2-Անվտանգության այլ միջոցառումների հետ խեղաթյուրում
Obfuscation-ը պաշտպանության ստարտափ շերտն է։ Այն զուգակցելով տարբեր մեթոդների հետ, ինչպիսիք են խիստ թեստավորումը, անվտանգ կոդավորման պրակտիկաները եւ այլն, կարող է ավելացնել անխախտ պաշտպանություն ձեր նախագծին:
3-Code Փաստաթղթավորում
Պահպանեք սկզբնական կոդի հստակ տարբերակը եւ կանոնադրությունը հետագա կարգաբերման համար: Այն թույլ կտա ձեզ մուտք գործել ձեր սկզբնական կոդը՝ այդպիսով հեշտացնելով փոփոխության գործընթացը։
4-Ակտիվություն
Մնացեք թարմացված զարգացող սպառնալիքների մասին եւ համապատասխանաբար փոփոխեք ձեր խեղաթյուրման մարտավարությունը։
Էթիկական նկատառումներ
Խեղաթյուրման գաղափարը առաջ եկավ կիբեռհարձակումներից ձեր նախագծերի էթիկական պաշտպանության զգացումով։ Այսպիսով, դրա չարաշահումը կարող է հանգեցնել վատ հանգամանքների, ինչպիսիք են.
1-Չարամիտ ծրագրերի տեղակայում
Կիբեռհանցագործները հաճախ օգտագործում են աղավաղման տեխնիկան՝ իրենց վտանգավոր սցենարները կամ քրեական գրանցումները թաքցնելու համար։
2-Խաբուսիկ պրակտիկաներ
Obfuscation-ը կարող է նաեւ ներխուժել մարդու գաղտնիություն, հետեւել սցենարներին եւ այլն։ Միշտ կարեւոր է հաշվի առնել նման մեթոդների ճիշտ օգտագործումը։ Նման բաների միջեւ հավասարակշռություն պահպանելը աղավաղման առաջին քայլն է։
Խառնաշփոթի սահմանափակումները
Թեեւ ձեր կոդը եւ նախագծերը պաշտպանելու համար խեղաթյուրման օգտագործումը շատ օգտակար է, այն հիմար չէ։ Այն ունի որոշ սահմանափակումներ, որոնք կարող են նյարդայնացնել ձեզ այն օգտագործելիս։ Նրա չբավարարված բացերից մի քանիսը քննարկվում են ստորեւ.
1-Կատարման ազդեցություն.
Եթե ձեր կոդը խեղաթյուրված է անհրաժեշտությունից ավելի, ապա դա բացասաբար կազդի ձեր կոդի աշխատաժամանակի վրա, հիմնականում, եթե օգտագործվում են դինամիկ գեներացում կամ ավելորդ կոդի մեթոդներ։
2-Բացարձակ անվտանգության բացակայություն.
Փորձառու հաքերները կամ հարձակվողները կարող են օգտագործել խեղաթյուրում ձեր արդեն աղավաղված կոդի վրա՝ ի վերջո չթողնելով ձեր կոդի պաշտպանությունը։
3-Debugging մարտահրավերներ.
Խեղաթյուրված կոդը միշտ դժվար է կարգաբերել, պահպանել կամ զարգացնել, քանի որ ավելացվում են անհարկի տողեր, որոնք օգտագործվում են դրա պաշտպանության համար։ Դա ավելի դժվար է ծրագրավորողների համար, ովքեր չեն եղել սկզբնական կոդի եւ աղավաղված կոդի մշակման թիմի անդամ։
4-Համատեղելիության խնդիրներ.
Հատուկ աղավաղման մեթոդները հասանելի չեն բոլոր բրաուզերներում կամ միջավայրերում, այդպիսով մեծացնելով տեխնիկական խնդիրների հավանականությունը կոդի ելքում կամ աշխատանքում։
Եզրակացություն
JavaScript obfuscation-ը հզոր եւ օգտակար գործիք է գողությունից, հաքերներից, հարձակվողներից, խեղաթյուրումից եւ հակադարձ ճարտարագիտությունից պաշտպանելու համար: Թեեւ դա պաշտպանության վահան է ձեր զգայուն տեղեկատվության եւ մտավոր սեփականության համար, որը պահպանվում է ձեր համակարգչում կոդավորմամբ, այն մշտական կամ անպարտելի լուծում չէ անվտանգության համար:
Կառուցապատողը չպետք է ապավինի պարզապես մթագնմանը։ Հասկանալով եւ ձեռք բերելով բավարար գիտելիքներ դրա տեխնիկայի, առավելությունների եւ սահմանափակումների մասին, մշակողները կարող են այն դարձնել ավելի արժեքավոր եւ արդյունավետ ձեր կոդի վերջնական պաշտպանության համար:
Թեեւ այն ունի որոշ առավելություններ, սահմանափակումներ եւ այն ամենը, ինչ պետք է գոյություն ունենա գործընթացին կամ տեխնիկային, նրա իրական ուժը կայանում է նրանում, որ այն շերտավոր պաշտպանական ռազմավարության մի մասն է; Դուք պետք է բավականաչափ պարապեք, որպեսզի այն ավելի արդյունավետ, օգտակար եւ արդյունավետ լինի ձեզ համար, քան որեւէ մեկը։ Այն օգնում է ապահովել ձեր JavaScript կոդի ամբողջականությունը, գաղտնիությունը եւ հուսալիությունը անընդհատ զարգացող թվային լանդշաֆտում:
Կարճ ասած, այն գործիք է, որը կօգնի ձեզ պահպանել ձեր գաղտնիությունը եւ մոտիվացնում է մտածել ձեր տեղեկատվությունը պաշտպանելու ավելի արդյունավետ ուղիների մասին։
Ձեր վեբ մշակումը օպտիմալացնելու համար ավելի շատ գործիքների համար ստուգեք.
Անվտանգության լրացուցիչ գործիքների համար այցելեք UrwaTools Security բաժին: