Мазмұны

JavaScript — орасан зор және серпінді веб-сайт мазмұнын жасайтын заманауи бағдарламалау тілі. Бір қызығы, ол бір жіп принципі бойынша жұмыс істейді. Демек, бір уақытта бір ғана операция жасауға болады. Объектілерді тікелей жасауға болады, ал айнымалылардың бекітілген статикалық түрлері болмайды.

JavaScript көптеген веб-әзірлеушілер үшін оңай, ал оның бағдарлама кодына пайдаланушылар мен кез келген адам қол жеткізе алады. Яғни, веб-сайт әзірлеушілері үшін JavaScript-ті пайдаланудың ең күрделі бөлігі. Осылайша көптеген шабуылдаушылар веб-сайт кодына және веб-сайт пен бизнеске зиян келтіруі мүмкін деректердің осал тұстарына оңай кіріп, пайдалана алады.

JavaScript жасаған кодты жеңу немесе сақтау үшін әзірлеушілер JavaScript Obfuscation деп аталатын әдісті қолданады. Бұл мақалада JavaScript обфускаторын, JS кодын қалай қорғауға және сақтауға болатынын және JS обфускаторының маңыздылығын зерттейсіз.

Кодтың дұрыс орындалуын қамтамасыз ете отырып, әзірлеушілер негізгі кодты адам оңай түсіне алмайтын проблемалық формаға өзгертетін немесе өзгертетін кодты қамтамасыз ету процесі. Шифрлаудан айырмашылығы (өзгертілген кодты декодтау үшін кілт қажет), обфузия негізгі кодты қайта құрылымдау үшін ешқандай кілтті талап етпейді. 

Бұл процестің негізгі мақсаты зияткерлік меншік объектілерін заңсыз қол жеткізудің, кері машина жасаудың, ұрлаудың алдын алу немесе тоқтату болып табылады.

Обфузия әр түрлі мақсаттар мен игіліктерге қызмет ете алады, соған байланысты ол қолданылады, олардың кейбіреулері төменде келтірілген:

Обфузия кодты және сезімтал ақпаратты киберқауіптер мен шабуылдаушылардан қорғайды, осылайша жобаңыздың құпиялылығын қамтамасыз етеді.

Обфузиялық кодтар хакерлерге оларды қасақана мақсатта пайдалану үшін оларды теріске шығаруды қиындатуы мүмкін.

Обфузия өзiнiң тактикасы мен стратегияларын бiрегей iске асыруды қамтамасыз ету арқылы бәсекелестiк артықшылықты қамтамасыз етуге тиiс.

Кейбір кодқа пайдалану үшін маңызды, бірақ ақпараттың ағып кетуіне жол бермейтін және ақпараттың тек сіз үшін ғана болуына көмектесетін, жұртшылықтың әсеріне ұшырамауы тиіс сезімтал ақпарат, кілттер немесе логика кіреді.

Төменде JavaScript обфускаторының мысалы көрсетілген:

JS-тегі Сәлем сөзінің негізгі коды мынандай көрінеді:

функция сәлемдесуі (атауы) {

    "Сәлеметсіз бе, " + атауы + "!";

}

Обфузия операциясы мына кодты мына кодқа түрлендіреді:

функция _0x2c56(_0x1a73){қайтарым 'Сәлем, '+_0x1a73++!';};}

Екі кодтың да мағынасы бірдей, ал олардың шығуы ешқандай айырмашылыққа әкелмейді, бірақ депо айырмашылығы кодты айтарлықтай қорғауға әкеледі. Күрделі заттарға қол жеткізу әрқашан қиындай түседі.

Обфузия АҚ-ның жұмыс істеуі төменде көрсетілген

Бүкіл процесс келесі қадамдарды орындайды: 

Мұнда дескриптивті ауыспалы атауларды ауыстыру мағынасыз жолдармен жүргізіледі (мысалы, пайдаланушы аты A1b2c3 болады)

Жақсы түсіну үшін төмендегі мысал келтіріледі

Бастапқы код:

функция calculateTotal (баға, салық) {

    қайтарым бағасы + (бағасы * салық);

}

Бұл код обфузиядан кейін осылай көрінуі мүмкін

Обфузиялық код:

функция _0x45a1(x,y){қайтарым x+(x*y);}

Ішекті шифрлау деген атпен де белгілі. Бұл URL немесе API пернелері сияқты сезімтал деректер код ішіндегі жолдармен кодталатын процесс. Келесі жолды шифрлау мысалы:

Бастапқы код:

const apiKey = "ABC123";

Обфузиялық нұсқа төменде келтірілген.

Обфузиялық код:

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

 Кодты тегістеу деген атпен белгілі қысқа формада. Кодекстің күрделі құрылымдары оқу мүмкіндігінше азайту үшін жеңілдетілген түсініктемелерді алып тастайды.

Бастапқы код:

Қарапайым код осылай көрінуі мүмкін

функцияны тексеруAccesces(пайдаланушы) {

    егер (user.role === "әкімші") шындыққа оралса;

    басқа қайтаратын жалған;

}

Обфузиялық код:

функция _0x1a2b(_0x3c4d) {

    қайтару _0x3c4d["\x72\x6f\x6c\x65"] == "\x61\x64\x6d\x69\x69\x6e"?!0x0: !0x1;

}

 Жоғарыдағы ұсынылған екі кодтың арасындағы айырмашылықтан байқалатындай, оқу қабілеті қатты азаяды.

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

}

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

}) ();

Бұл кодтың түзу сызықты және маңызды бөлігін қиындықтың ең жоғары деңгейіне қалай түрлендіруге болатыны туралы қарапайым қадамдардың (тәсілдердің) кейбіреулері ғана еді, бұл оны обфузия құралын пайдалана отырып, өте жетілдірілген және күрделі кодқа ұқсайды.

JS-тегі обфузияның озық тәжірибесі үшін оны тәжірибеге енгізу бойынша бірнеше ұсыныс бар.

Сенімді түрлендірулерді жою үшін JavaScript Obfuscator немесе UglifyJS сияқты сенімді обфускаторлардың жұмысы.  

Обфузия — қорғаныстың стартап қабаты. Оны қатаң тестілеу, қауіпсіз кодтау тәжірибесі және т.б. сияқты түрлі тәсілдермен түйісу жобаңызға сынбайтын қорғауды қосуы мүмкін.

Бастапқы кодтың және чартерлік кодтың нақты нұсқасын болашақ дебюждеу үшін сақтаңыз. Ол бастапқы кодқа кіруге мүмкіндік береді, осылайша түзету процесін жеңілдетеді.

Пайда болған қауіптер туралы жаңартылып, обфузия тактикасын тиісінше өзгертіңіз.

Обфузия идеясы сіздің жобаларыңызды кибершабуылдардан этикалық қорғау сезімімен пайда болды. Сөйтіп, оны мақсатсыз пайдалану жаман жағдайларға әкелуі мүмкін, мысалы:

Киберқылмыскерлер өздерінің қауіпті сценарийлерін немесе соттылығын жасыру үшін обфузия техникасын жиі қолданады.

Обфузия өз құпиялылығына да басып кіруі, сценарийлерді қадағалауы және т.б. мүмкін. Мұндай тәсілдерді дұрыс қолдану мүмкіндігін қарастыру әрқашан аса маңызды. Мұндай нәрселер арасында тепе-теңдікті сақтау обфузияны орындаудың алғашқы қадамы болып табылады.

Код пен жобаларды қорғау үшін обфузияны пайдалану өте тиімді болғанымен, ол ақымақтық емес. Оны пайдалану кезінде сізді тітіркендіретін кейбір шектеулер бар. Оның кейбір қанағаттандырылмаған олқылықтары төменде талқыланады:

Егер код қажет болғаннан көп болса, ол кодтың іске қосу уақытына кері әсерін тигізеді, негізінен, егер динамикалық генерация немесе артық код әдістері қолданылса.

Сарапшы хакерлер немесе шабуылдаушылар обфузияны қазірдің өзінде обфузияланған кодта пайдалана алады, ақыр соңында кодты қорғауды қалдырмайды.

Обфузиялық код оны қорғау үшін пайдаланылатын қажетсіз сызықтардың қосылуына байланысты әрқашан дебюжге, ұстауға немесе дамытуға тырысады. Бастапқы код пен обфузиялық кодты әзірлеу тобына кірмеген бағдарламашылар үшін одан да қиын.

Обфузиялаудың нақты әдістері барлық браузерлер немесе орталар бойынша қол жетімсіз, осылайша кодты шығару немесе жұмыс істеу кезінде техникалық мәселелердің туындау мүмкіндігін арттырады.

JavaScript обфузиясы — өз кодын ұрлықтан, хакерлерден, шабуылдаушылардан, тамшылаудан, кері машина жасаудан қорғаудың қуатты әрі тиімді құралы. Компьютерде кодтау арқылы сақталған сезімтал ақпарат пен зияткерлік меншікке арналған қорғау қалқаны болғанымен, ол қауіпсіздіктің тұрақты немесе мызғымас шешімі болып табылмайды.

 Әзірлеуші обфузияға ғана сүйенбеуі тиіс. Оның тәсілдерін, артықшылықтарын және шектеулерін түсініп, жеткілікті білім ала отырып, әзірлеушілер оны кодты түпкі қорғау үшін неғұрлым құнды әрі тиімді ете алады.

Оның қандай да бір артықшылықтары, шектеулері, сондай-ақ процесс немесе техника болуы қажет нәрсенің бәрі болғанымен, оның шынайы қуаты қабатты қорғаныс стратегиясының бір бөлігі болып табылады; оны басқа біреуден гөрі тиімдірек, пайдалы және өнімді ету үшін жеткілікті тәжірибеден өткізу керек. Ол үнемі дамып келе жатқан сандық ландшафтта JavaScript кодының тұтастығын, құпиялылығын және сенімділігін қамтамасыз етуге көмектеседі. 

Бір қысқаша айтқанда, ол құпиялылықты сақтауға көмектесетін құрал болып табылады және ақпаратыңызды сақтаудың неғұрлым тиімді жолдарын ойлауға ынталандырады.

Веб-дамуды оңтайландыруға арналған қосымша құралдар үшін мына бөлімді тексеріңіз:

Қауіпсіздік құралдары туралы қосымша ақпарат алу үшін UrwaTools қауіпсіздік бөліміне кіріңіз.

UrwaTools Editorial

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

Жаңалықтар бюллетені

Біздің ең соңғы құралдарымызбен хабардар болып отырыңыз