Мазмұны
JavaScript — орасан зор және серпінді веб-сайт мазмұнын жасайтын заманауи бағдарламалау тілі. Бір қызығы, ол бір жіп принципі бойынша жұмыс істейді. Демек, бір уақытта бір ғана операция жасауға болады. Объектілерді тікелей жасауға болады, ал айнымалылардың бекітілген статикалық түрлері болмайды.
JavaScript көптеген веб-әзірлеушілер үшін оңай, ал оның бағдарлама кодына пайдаланушылар мен кез келген адам қол жеткізе алады. Яғни, веб-сайт әзірлеушілері үшін JavaScript-ті пайдаланудың ең күрделі бөлігі. Осылайша көптеген шабуылдаушылар веб-сайт кодына және веб-сайт пен бизнеске зиян келтіруі мүмкін деректердің осал тұстарына оңай кіріп, пайдалана алады.
JavaScript жасаған кодты жеңу немесе сақтау үшін әзірлеушілер JavaScript Obfuscation деп аталатын әдісті қолданады. Бұл мақалада JavaScript обфускаторын, JS кодын қалай қорғауға және сақтауға болатынын және JS обфускаторының маңыздылығын зерттейсіз.
JavaScript обфузиясы дегеніміз не?
Кодтың дұрыс орындалуын қамтамасыз ете отырып, әзірлеушілер негізгі кодты адам оңай түсіне алмайтын проблемалық формаға өзгертетін немесе өзгертетін кодты қамтамасыз ету процесі. Шифрлаудан айырмашылығы (өзгертілген кодты декодтау үшін кілт қажет), обфузия негізгі кодты қайта құрылымдау үшін ешқандай кілтті талап етпейді.
Бұл процестің негізгі мақсаты зияткерлік меншік объектілерін заңсыз қол жеткізудің, кері машина жасаудың, ұрлаудың алдын алу немесе тоқтату болып табылады.
Неліктен JavaScript обфузиясын пайдаланыңыз?
Обфузия әр түрлі мақсаттар мен игіліктерге қызмет ете алады, соған байланысты ол қолданылады, олардың кейбіреулері төменде келтірілген:
1-Ұрлыққа қарсы қауіпсіздік
Обфузия кодты және сезімтал ақпаратты киберқауіптер мен шабуылдаушылардан қорғайды, осылайша жобаңыздың құпиялылығын қамтамасыз етеді.
2-Шыңдалудың алдын алу
Обфузиялық кодтар хакерлерге оларды қасақана мақсатта пайдалану үшін оларды теріске шығаруды қиындатуы мүмкін.
3-Кәсіпкерлік мүдделерді сақтау
Обфузия өзiнiң тактикасы мен стратегияларын бiрегей iске асыруды қамтамасыз ету арқылы бәсекелестiк артықшылықты қамтамасыз етуге тиiс.
4-Сезімтал ақпаратты сақтау
Кейбір кодқа пайдалану үшін маңызды, бірақ ақпараттың ағып кетуіне жол бермейтін және ақпараттың тек сіз үшін ғана болуына көмектесетін, жұртшылықтың әсеріне ұшырамауы тиіс сезімтал ақпарат, кілттер немесе логика кіреді.
Төменде JavaScript обфускаторының мысалы көрсетілген:
JS-тегі Сәлем сөзінің негізгі коды мынандай көрінеді:
функция сәлемдесуі (атауы) {
"Сәлеметсіз бе, " + атауы + "!";
}
Обфузия операциясы мына кодты мына кодқа түрлендіреді:
функция _0x2c56(_0x1a73){қайтарым 'Сәлем, '+_0x1a73++!';};}
Екі кодтың да мағынасы бірдей, ал олардың шығуы ешқандай айырмашылыққа әкелмейді, бірақ депо айырмашылығы кодты айтарлықтай қорғауға әкеледі. Күрделі заттарға қол жеткізу әрқашан қиындай түседі.
JavaScript обфузиясы қалай жұмыс істейді?
Обфузия АҚ-ның жұмыс істеуі төменде көрсетілген
Бүкіл процесс келесі қадамдарды орындайды:
1-Ауыспалы атау
Мұнда дескриптивті ауыспалы атауларды ауыстыру мағынасыз жолдармен жүргізіледі (мысалы, пайдаланушы аты A1b2c3 болады)
Жақсы түсіну үшін төмендегі мысал келтіріледі
Бастапқы код:
функция calculateTotal (баға, салық) {
қайтарым бағасы + (бағасы * салық);
}
Бұл код обфузиядан кейін осылай көрінуі мүмкін
Обфузиялық код:
функция _0x45a1(x,y){қайтарым x+(x*y);}
2-жол & санды кодтау
Ішекті шифрлау деген атпен де белгілі. Бұл URL немесе API пернелері сияқты сезімтал деректер код ішіндегі жолдармен кодталатын процесс. Келесі жолды шифрлау мысалы:
Бастапқы код:
const apiKey = "ABC123";
Обфузиялық нұсқа төменде келтірілген.
Обфузиялық код:
const _0x3d2a = "\x41\x42\x43\x31\x32\x33";
3-Басқару ағынын тегістеу
Кодты тегістеу деген атпен белгілі қысқа формада. Кодекстің күрделі құрылымдары оқу мүмкіндігінше азайту үшін жеңілдетілген түсініктемелерді алып тастайды.
Бастапқы код:
Қарапайым код осылай көрінуі мүмкін
функцияны тексеруAccesces(пайдаланушы) {
егер (user.role === "әкімші") шындыққа оралса;
басқа қайтаратын жалған;
}
Обфузиялық код:
функция _0x1a2b(_0x3c4d) {
қайтару _0x3c4d["\x72\x6f\x6c\x65"] == "\x61\x64\x6d\x69\x69\x6e"?!0x0: !0x1;
}
Жоғарыдағы ұсынылған екі кодтың арасындағы айырмашылықтан байқалатындай, оқу қабілеті қатты азаяды.
4-өлі кодексті ендіру
Ол Code flatting & control flow Alteration сияқты. Мағынасыз код фрагменттерін бастапқы кодқа қосу оны азырақ оқуға мүмкіндік береді.
функция валидациясыInput(енгізу) {
егер (енгізу.ұзындығы > 5) шындыққа қайтаратын болса;
басқа қайтаратын жалған;
// Төменде өлі код
const x = 10;
console.log ("Бұл ешқашан жүрмеді");
}
Бұл кодтың Өлі кодты ендіру нұсқасы (Obfuscated) мынадай көрінеді :
функция валидациясыInput(енгізу) {
егер (енгізу.ұзындығы > 5) {
// Пайдалы ештеңе жасамайтын өлі код
const unusedVar = Math.random() * 100;
console.log ("Бұл өлі кодтың бөлігі: ", пайдаланылмағанВар);
шындыққа оралу;
Тағы }
// Төменде қосымша өлі код
fakeCondition = input.input («құпия») болсын;
егер (fakeCondition) {
console.log ("Бұл шарт жалған және өзекті емес");
}
жалған қайтару;
}
// Қол жетімді емес өлі код
const x = 10;
const y = 20;
console.log ("Бұл ешқашан орындалмайды, бірақ шабуылдаушыларды шатастырады: ", x + y);
}
5, Дебюжге қарсы тәсілдер
JS-тегі дебюджингке қарсы техника бірегей болып табылады және кодты тежеу және дебюждеу үшін дебюггерлік мәлімдемелерді, консольді анықтауды, сондай-ақ уақыт шабуылдарын көздейді.
setInterval(функция())
егер (typeof console._commandLineAPI!='анықталмаған') {
ескерту ("Debugger анықталды!");
window.location.href = "шамамен:бос";
}
}, 1000);
Дәл осы код, JS обфузия құралын пайдалана отырып, обфузиялық нұсқаға түрлендірілгенде. Дебюжге қарсы қосымша қабатты пайдалану арқылы түсіну және талдау қиындай түсті.
Обфузиялық код:
(функция () {
var _0x3c87 = ['_commandLineAPI', 'анықталмаған', 'шамамен:бос'];
(функция (_0x4d1b99, _0x1ea782) {
var _0x223b1b = функциясы (_0x234219) {
ал (--_0x234219) {
_0x4d1b99['push'](_0x4d1b99['shift']());
}
} ;
_0x223b1b(+_0x1ea782);
} (_0x3c87, 0x18f);
var _0x4a68 = функциясы (_0x4d1b99, _0x1ea782) {
_0x4d1b99 = _0x4d1b99 - 0x0;
var _0x223b1b = _0x3c87[_0x4d1b99];
қайтарым _0x223b1b;
} ;
setInterval(функция () {
егер (typeof консолі[_0x4a68('0x0')] !== _0x4a68(''0x1')) {
ескерту('Debugger анықталды!');
терезе['орын']['href'] = _0x4a68('0x2');
}
}, 0x3e8);
}) ();
Бұл кодтың түзу сызықты және маңызды бөлігін қиындықтың ең жоғары деңгейіне қалай түрлендіруге болатыны туралы қарапайым қадамдардың (тәсілдердің) кейбіреулері ғана еді, бұл оны обфузия құралын пайдалана отырып, өте жетілдірілген және күрделі кодқа ұқсайды.
JavaScript бағдарламасында обфузияға арналған тәжірибе ұсыныстары
JS-тегі обфузияның озық тәжірибесі үшін оны тәжірибеге енгізу бойынша бірнеше ұсыныс бар.
Сенімді құралдарды таңдау
Сенімді түрлендірулерді жою үшін JavaScript Obfuscator немесе UglifyJS сияқты сенімді обфускаторлардың жұмысы.
2-Қауіпсіздіктің басқа шараларымен обфузия
Обфузия — қорғаныстың стартап қабаты. Оны қатаң тестілеу, қауіпсіз кодтау тәжірибесі және т.б. сияқты түрлі тәсілдермен түйісу жобаңызға сынбайтын қорғауды қосуы мүмкін.
3-кодтық құжаттама
Бастапқы кодтың және чартерлік кодтың нақты нұсқасын болашақ дебюждеу үшін сақтаңыз. Ол бастапқы кодқа кіруге мүмкіндік береді, осылайша түзету процесін жеңілдетеді.
4-белсенділік
Пайда болған қауіптер туралы жаңартылып, обфузия тактикасын тиісінше өзгертіңіз.
Этикалық ойлар
Обфузия идеясы сіздің жобаларыңызды кибершабуылдардан этикалық қорғау сезімімен пайда болды. Сөйтіп, оны мақсатсыз пайдалану жаман жағдайларға әкелуі мүмкін, мысалы:
1-Өрістететін зиянды бағдарламалар
Киберқылмыскерлер өздерінің қауіпті сценарийлерін немесе соттылығын жасыру үшін обфузия техникасын жиі қолданады.
2-Алдамшы практика
Обфузия өз құпиялылығына да басып кіруі, сценарийлерді қадағалауы және т.б. мүмкін. Мұндай тәсілдерді дұрыс қолдану мүмкіндігін қарастыру әрқашан аса маңызды. Мұндай нәрселер арасында тепе-теңдікті сақтау обфузияны орындаудың алғашқы қадамы болып табылады.
Обфузияның шектелуі
Код пен жобаларды қорғау үшін обфузияны пайдалану өте тиімді болғанымен, ол ақымақтық емес. Оны пайдалану кезінде сізді тітіркендіретін кейбір шектеулер бар. Оның кейбір қанағаттандырылмаған олқылықтары төменде талқыланады:
1-Өнімділік әсері:
Егер код қажет болғаннан көп болса, ол кодтың іске қосу уақытына кері әсерін тигізеді, негізінен, егер динамикалық генерация немесе артық код әдістері қолданылса.
2-Абсолютті қауіпсіздіктің болмауы:
Сарапшы хакерлер немесе шабуылдаушылар обфузияны қазірдің өзінде обфузияланған кодта пайдалана алады, ақыр соңында кодты қорғауды қалдырмайды.
3-Дебюжингтік сын-тегеуріндер:
Обфузиялық код оны қорғау үшін пайдаланылатын қажетсіз сызықтардың қосылуына байланысты әрқашан дебюжге, ұстауға немесе дамытуға тырысады. Бастапқы код пен обфузиялық кодты әзірлеу тобына кірмеген бағдарламашылар үшін одан да қиын.
4-үйлесімділік мәселелері:
Обфузиялаудың нақты әдістері барлық браузерлер немесе орталар бойынша қол жетімсіз, осылайша кодты шығару немесе жұмыс істеу кезінде техникалық мәселелердің туындау мүмкіндігін арттырады.
Қорытынды
JavaScript обфузиясы — өз кодын ұрлықтан, хакерлерден, шабуылдаушылардан, тамшылаудан, кері машина жасаудан қорғаудың қуатты әрі тиімді құралы. Компьютерде кодтау арқылы сақталған сезімтал ақпарат пен зияткерлік меншікке арналған қорғау қалқаны болғанымен, ол қауіпсіздіктің тұрақты немесе мызғымас шешімі болып табылмайды.
Әзірлеуші обфузияға ғана сүйенбеуі тиіс. Оның тәсілдерін, артықшылықтарын және шектеулерін түсініп, жеткілікті білім ала отырып, әзірлеушілер оны кодты түпкі қорғау үшін неғұрлым құнды әрі тиімді ете алады.
Оның қандай да бір артықшылықтары, шектеулері, сондай-ақ процесс немесе техника болуы қажет нәрсенің бәрі болғанымен, оның шынайы қуаты қабатты қорғаныс стратегиясының бір бөлігі болып табылады; оны басқа біреуден гөрі тиімдірек, пайдалы және өнімді ету үшін жеткілікті тәжірибеден өткізу керек. Ол үнемі дамып келе жатқан сандық ландшафтта JavaScript кодының тұтастығын, құпиялылығын және сенімділігін қамтамасыз етуге көмектеседі.
Бір қысқаша айтқанда, ол құпиялылықты сақтауға көмектесетін құрал болып табылады және ақпаратыңызды сақтаудың неғұрлым тиімді жолдарын ойлауға ынталандырады.
Веб-дамуды оңтайландыруға арналған қосымша құралдар үшін мына бөлімді тексеріңіз:
Қауіпсіздік құралдары туралы қосымша ақпарат алу үшін UrwaTools қауіпсіздік бөліміне кіріңіз.