Мазмуну

JavaScript - бул кеңири жана динамикалуу веб-сайт мазмунун түзгөн заманбап программалоо тили. Кызыктуусу, ал бир поток принциби боюнча иштейт. Бул бир учурда бир гана операцияны жасай аласыз дегенди билдирет. Объектилер түздөн-түз жасалышы мүмкүн, ал эми өзгөрмөлөрдүн туруктуу статикалык түрлөрү жок.

JavaScript көптөгөн веб-өндүрүүчүлөр үчүн жеңил, жана анын колдонмо коду колдонуучулар жана ар бир адам үчүн жеткиликтүү. Бул веб-сайттарды иштеп чыгуучулар үчүн JavaScript колдонуунун эң татаал бөлүгү. Ошентип, көптөгөн чабуулчулар веб-сайттын кодуна жана маалыматтардын алсыздыктарына оңой кирип жана пайдалана алышат, алар веб-сайтка жана бизнеске зыян келтириши мүмкүн.

JavaScript менен түзүлгөн кодду жеңүү же сактоо үчүн иштеп чыгуучулар JavaScript Obfuscation деп аталган ыкманы колдонушат. Бул макалада сиз JavaScript Obfuscator, JS кодун кантип коргой жана сактоого болот, ошондой эле JS обфускатордун маанилүүлүгүн изилдейсиз.

Иштеп чыгуучулар коддун туура аткарылышын камсыз кылып, негизги кодду адамдар оңой түшүнбөй турган көйгөйлүү формага өзгөртүшкөн же өзгөртүшкөн кодду коопсуздук процесси. Шифрлөөдөн айырмаланып (өзгөртүлгөн кодду чечүү үчүн ачкыч талап кылынат), обфускация негизги кодду кайра түзүү үчүн эч кандай ачкычты талап кылбайт. 

Бул процесстин негизги максаты интеллектуалдык менчикти уруксатсыз кирүүнү, тескери инженерияны жана уурдоону алдын алуу же токтотуу болуп саналат.

Обфускациялоо ар кандай максаттарга жана пайдаларга кызмат кылышы мүмкүн, алардын кээ бирлери төмөндө берилген:

Обфускация сиздин кодуңузду жана жеке маалыматты кибер уурулардан жана кол салуучулардан коргойт, ошентип сиздин долбоордун купуялуулугун камсыз кылат.

Жашырылган коддор хакерлерге аларды жаман максатта колдонуу үчүн аларды оңдоону кыйындатат.

Обфускация, адамдын тактикасынын жана стратегиясынын уникалдуу ишке ашырылышын сактоо менен атаандаштык артыкчылыгын камсыз кылат.

Кээ бир коддор иштетүү үчүн маанилүү, бирок коомчулукка ачыкка чыкпашы керек болгон жеке маалыматтарды, ачкычтарды же логиканы камтыйт.

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

JS менен Салам деген сөздүн негизги коду төмөндөгүдөй көрүнөт:

функция greet(name) {

    return "Саламатсызбы, " + ат + "!";

}

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

функция _0x2c56(_0x1a73){return 'Салам, '+_0x1a73+'!';}

Эки код тең бирдей мааниге ээ, жана алардын чыгарылышы эч кандай айырма болбойт, бирок опечатка айырмасы кодду олуттуу коргоого алып келет. Татаал нерселерге жетүү дайыма кыйын.

JS обфускациянын иштеши төмөндө көрсөтүлгөн.

Бүткүл процесс төмөнкүдөй бир нече кадамдарды аткарат. 

Бул жерде сүрөттөөчү өзгөрмөлөрдүн аттарын маанисиз саптар менен алмаштыруу ишке ашырылат (мисалы, колдонуучу аты a1b2c3 болот)

Жакшыраак түшүнүү үчүн төмөндө мисал келтирилди

Баштапкы код:

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

    кайтаруу баасы + (баа * салык);

}

Бул код өчүрүлгөндөн кийин мындай көрүнүшү мүмкүн

Жашырылган код:

функция _0x45a1(x,y){return x+(x*y);}

Ал сап шифрлөө деп да белгилүү. Бул URLлер же API ачкычтары сыяктуу жеке берилиштер коддун ичиндеги саптар менен коддолгон процесс. Төмөндө сап шифрлөөнүн мисалы келтирилген:

Баштапкы код:

const apiKey = "ABC123";

Жашырылган версиясы төмөндө берилген.

Жашырылган код:

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

 Кыскача формада Код жалпактоо деп аталат. Татаал Код структуралары жөнөкөйлөтүлгөн, комментарийлер мүмкүн болушунча окууга жөндөмдүүлүктү азайтуу үчүн алынып салынат.

Баштапкы код:

Жөнөкөй код төмөндөгүдөй болушу мүмкүн

функция checkAccess(user) {

    if (user.role === "admin") true кайтарып берет;

    болбосо жалган кайтарылат;

}

Жашырылган код:

функция _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;

    конст y = 20;

    console.log("Бул эч качан аткарылбайт, бирок кол салуучуларды адаштырат: ", x + y);

}

JS-деги отладкага каршы техника уникалдуу жана кодго жана ката чечүүгө тоскоолдук кылуу үчүн отладчик билдирүүлөрүн, консолду аныктоону жана убакытты аныктоону камтыйт.

setInterval(function(){

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

        alert("Отладчик аныкталды!");

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

    }

}, 1000);

Ошол эле код, JS обфускациялоо куралын колдонуу менен жашырылган версияга өзгөртүлгөндө. Бул анти-отладка кошумча катмарын колдонуу менен түшүнүү жана талдоо кыйын болуп калды.

Жашырылган код:

(функция () {

    var _0x3c87 = ['_commandLineAPI', 'undefined', '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(функция () {

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

            alert('Отладчик аныкталды!');

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

        }

    }, 0x3e8);

})();

Булар жөнөкөй жана маанилүү кодду эң жогорку кыйынчылык деңгээлине айландыруунун жөнөкөй кадамдарынын (ыкмаларынын) кээ бирлери гана болду, бул аны обфускациялоо куралын колдонуу менен абдан өнүккөн жана татаал код сыяктуу кылып көрсөтөт.

ЖСте обфускациянын эң мыкты практикасы үчүн, аны иш жүзүнө ашыруу үчүн бир нече сунуштар бар.

Бекем өзгөртүүлөрдү алып салуу үчүн 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...

Жаңылыктар бюллетени

Акыркы куралдарыбыз менен кабардар болуп туруңуз