Məzmun cədvəli

JavaScript geniş və dinamik veb-sayt məzmunu yaradan müasir proqramlaşdırma dilidir. Maraqlıdır ki, bu vahid iplik prinsipi üzərində işləyir. Bu o deməkdir ki, bir dəfəyə yalnız bir əməliyyat həyata keçirə bilərsiniz. Obyektlər birbaşa düzəldilə bilər, dəyişənlərin isə sabit statik tipləri yoxdur.

JavaScript bir çox web developers üçün asandır. Onun tətbiqi kodu istifadəçilər və hər kəs tərəfindən əlçatandır. Bu, javaScript-in veb-sayt tərtibatçıları üçün istifadəsinin ən çətin hissəsidir. Bu yolla bir çox hücumçu veb-sayt və biznesə zərər verə biləcək veb-sayt kodu və məlumat zəifliklərinə asanlıqla daxil ola və istismar edə bilər.

JavaScript-in yaratdığı kodu aşmaq və ya qeyd etmək üçün developerlər JavaScript Obfuscation adlı bir texnika işlədirlər. Bu məqalədə Siz JavaScript Obfuscator, JS kodunu necə qoruya və qeyd edə biləcəyinizi, JS obfuscator-un əhəmiyyətini araşdıracaqsınız.

Kodun təhlükəsizliyini təmin etmək prosesi. Bu prosesdə developerlər kodun düzgün icrasını təmin etməklə yanaşı, insanlar tərəfindən asanlıqla başa düşülə bilməyən əsas kodu problemli formaya dəyişir və ya dəyişdirirlər. Şifrləmədən fərqli olaraq (modifikasiya olunmuş kodu dekode etmək üçün açar tələb olunur), obfuskasiya əsas kodu yenidən qurulması üçün heç bir açar tələb etmir. 

Bu prosesin əsas məqsədi intellektual mülkiyyətin icazəsiz girişinin, əks mühəndisliyin və oğurluğun qarşısının alınması və ya dayandırılmasıdır.

Obfuskasiya istifadə olunduğuna görə müxtəlif məqsədlərə və faydalara xidmət edə bilər. Onlardan bəziləri aşağıda verilmişdir:

Obfuscation sizin kod və həssas məlumat kiber oğru və hücumçulardan qoruyur, beləliklə, sizin layihənizin məxfiliyini təmin edir.

Obfuscated kodlar hackerlərin onları debug etmək üçün çətinlik yarada bilər ki, onlar zərərli məqsədlər üçün istifadə edilə bilər.

Obfuscation bir şəxsin taktika və strategiyalarının unikal həyata keçirilməsini qorumaqla rəqabət üstünlüyünü təmin edəcək.

Bəzi kodlara həssas məlumatlar, açarlar və ya məntiq daxildir ki, bu da əməliyyat üçün vacibdir, lakin ictimaiyyətə açıq olmamalıdır. Məlumatlarınızın sızmasının qarşısını alır və informasiyanın yalnız sizin üçün olmasına kömək edir.

Aşağıda JavaScript Obfuscator nümunəsi təqdim olunur:

JS-də Hello sözünün əsas kodu belə görünür:

funksiya greet(name) {

    return "Salam , " + adı + "!";

}

Obfuskasiya əməliyyatı aşağıdakı kodu buna çevirir:

funksiya _0x2c56(_0x1a73){return 'Salam, '+_0x1a73+'!';}

Hər iki kod eyni məna daşıyır. Onların çıxış nəticələri heç bir fərqlə nəticələnsə də, tipo fərqi kodun əhəmiyyətli dərəcədə qorunması ilə nəticələnir. Mürəkkəb şeylərə giriş həmişə daha çətindir.

JS obfuscation-un işləməsi aşağıda göstərilib

Bütün proses bəzi addımları belə izləyir

Burada təsvir dəyişən adlarının əvəzlənməsi mənasız iplərlə yerinə yetirilir (məs., istifadəçi adı a1b2c3 olur)

Daha yaxşı anlamaq üçün aşağıda bir nümunə verilmişdir

Orjinal kod:

funksiya calculateTotal(qiymət, vergi) {

    geri qaytarma qiyməti + (qiymət * vergi);

}

Bu kod obfuscation sonra belə görünə bilər

Obfuscated kodu:

funksiya _0x45a1(x,y){dönüş x+(x*y);}

Bu həm də string şifrləmə kimi də tanınır. Bu, URL və ya API açarları kimi həssas məlumatların kod daxilində iplərlə kodlaşdırılması prosesidir. Aşağıda String Encryption misalı:

Orjinal Kod:

const apiKey = "ABC123";

Obfuscated versiyası aşağıda verilmişdir.

Obfuscated kodu:

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

 Kod flattening kimi tanınan qısa formada. Mürəkkəb Kod strukturları mümkün qədər oxunaqlılığı azaltmaq üçün sadələşdirilmiş şərhlər aradan qaldırılır.

Orjinal Kod:

Sadə bir kod belə görünə bilər

funksiya checkAccess(user) {

    if (user.role === "admin") həqiqi qaytarırsa;

    başqa yalan qaytarır;

}

Obfuscated Code:

funksiya _0x1a2b(_0x3c4d) {

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

}

 Readability çox azalır, belə ki, yuxarıda təqdim olunan iki kodun fərqindən müşahidə olunur.

Code flattening & control flow Alteration-a bənzəyir. Bu, onu daha az oxunaqlı etmək üçün orijinal koda mənasız kod snippetlərinin əlavə olunmasıdır.

funksiya validateInput(giriş) {

    əgər (input.length > 5) həqiqi qayıtsa;

    başqa yalan qaytarır;

    • Aşağıda ölü kod

    const x = 10;

    console.log("Bu heç vaxt qaçmayacaq");

}

Bu kodun Dead kodu daxil etmə versiyası (Obfuscated) belə görünür :

funksiya validateInput(giriş) {

    if (input.length > 5) {

        • Heç bir faydası olmayan ölü kod

        const istifadə olunmamışVar = Math.random() * 100;

        console.log("Bu ölü kodun bir hissəsidir: ", istifadə olunmamışVar);

        doğru qayıtmaq;

    } başqa {

        ► Aşağıda daha çox ölü kod

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

        if (fakeCondition) {

            console.log("Bu şərt saxta və əhəmiyyətsizdir");

        }

        yanlış geri qaytarmaq;

    }

    • Əlçatmaz ölü kod

    const x = 10;

    const y = 20;

    console.log("Bu heç vaxt icra etməyəcək, lakin hücumçuları çaşdırır: ", x + y);

}

JS-də anti-debugging texnikası unikaldır və kod və debuggingə mane olmaq üçün debugger ifadələr, konsol aşkar edilməsi və vaxt hücumları ilə bağlıdır.

setInterval(function(){

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

        xəbərdarlıq("Xəta ayıqlayıcı aşkarlandı!");

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

    }

}, 1000);

Eyni kod, JS obfuscation tool istifadə edərək obfuscated versiyasına dəyişdirildikdə. Anti-debugging əlavə qat istifadə edərək anlamaq və təhlil etmək çətinləşib.

Obfuscated kodu:

(funksiya () {

    var _0x3c87 = ['_commandLineAPI', 'undefined', 'about:blank'];

    (funksiya (_0x4d1b99, _0x1ea782) {

        var _0x223b1b = funksiya (_0x234219) {

            while (--_0x234219) {

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

            }

        };

        _0x223b1b(++_0x1ea782);

    }(_0x3c87, 0x18f));

    var _0x4a68 = funksiya (_0x4d1b99, _0x1ea782) {

        _0x4d1b99 = _0x4d1b99 - 0x0;

        var _0x223b1b = _0x3c87[_0x4d1b99];

        _0x223b1b qayıdış;

    };

    setInterval(function () {

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

            xəbərdarlıq('Xəta ayıqlayıcı aşkarlandı!');

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

        }

    }, 0x3e8);

})();

Bunlar sadə addımlardan (üsullardan) yalnız bir neçəsi idi ki, sadə bir kod parçasını ən yüksək çətinlik səviyyəsinə necə çevirmək olar, bu da obfuscation alətindən istifadə edərək çox inkişaf etmiş və mürəkkəb koda bənzəyirdi.

Ən yaxşı obfuskasiya üsulu üçün onu tətbiq etmək üçün bir neçə məsləhət var.

JavaScript Obfuscator və ya UglifyJS kimi etibarlı obfuscators əməliyyat möhkəm dönüşümləri aradan qaldırılması üçün.  

Obfuskasiya — müdafiənin başlanğıc layı. Onu ciddi test, təhlükəsiz kodlaşdırma üsulları və s. kimi müxtəlif üsullarla cütləmək layihənizə qırılmaz müdafiə əlavə edə bilər.

Gələcək debugging üçün orijinal kodun və nizamnamənin aydın versiyasını qeyd edin. Bu, sizə orijinal kodunuza daxil olmağa imkan verəcək və bununla da düzəliş prosesini asanlaşdıracaq.

Yeni yaranan təhlükələr barədə yenilənməni və obfuskasiya taktikanızı müvafiq olaraq dəyişdirin.

Obfuskasiya ideyası sizin layihələrinizin kiberhücumlardan mənəvi müdafiəsi hissi ilə ortaya çıxdı. Beləliklə, onun sui-istifadəsi pis hallara səbəb ola bilər. Məsələn:

Kibercinayətkarlar çox vaxt obfuskasiya üsulundan istifadə edərək təhlükəli skriptlərini və ya cinayət sənədlərini gizlədirlər.

Obfuskasiya həmçinin insanın şəxsi həyatına soxula, skriptləri izləyə və s. Bu cür üsullardan düzgün istifadə etmək hər zaman zəruridir. Belə şeylər arasında tarazlığı qorumaq obfuskasiyanı həyata keçirmək üçün ilk addımdır.

Kodunuzu və layihələrinizi qorumaq üçün obfuscation istifadə etmək çox faydalı olsa da, bu, ağılsızlıq deyil. Onun bəzi məhdudiyyətləri var ki, istifadə edərkən sizi qıcıqlandıra bilər. Onun bəzi ödənilməyən boşluqları aşağıda müzakirə olunur:

Əgər sizin kodunuz lazım olandan çox obfuscat olunursa, bu sizin kodunuzun qaçış vaxtına mənfi təsir edəcək, əsasən dinamik nəsil və ya redundant kod metodlarından istifadə olunarsa.

Ekspert hakerlər və ya hücumçular sizin artıq obfuscated kodu üzərində obfuscation istifadə edə bilər, nəticədə sizin kodu heç bir müdafiə tərk.

Obfuscated kodu həmişə onun qorunması üçün istifadə lazımsız xətlərin əlavə edilməsi səbəbiylə debug, saxlamaq və ya inkişaf etmək üçün hiyləgərdir. Orijinal kodun və obfuscated kodun inkişaf komandasına daxil olmayan proqramçılar üçün daha da çətindir.

Spesifik obfuskasiya üsulları bütün brauzerlər və ya mühitlər üzrə əlçatmazdır. Beləliklə, çıxışda və ya kodun işləməsində texniki məsələlərin şansları artır.

JavaScript obfuscation bir şəxsin kodu oğurluq, hacker, hücumçu, tampering və əks mühəndislik qarşı qorumaq üçün güclü və faydalı vasitədir. Kodlaşdırma ilə kompüterinizdə qənaət edilən həssas məlumatlarınız və intellektual mülkiyyətiniz üçün müdafiə qalxanı olsa da, bu, təhlükəsizliyin daimi və ya yenilməz həlli deyil.

 Təsərrüfatçı sadəcə obfuskasiyaya güvənməməlidir. Developerlər öz texnikalarını, faydalarını və məhdudiyyətlərini başa düşərək və kifayət qədər bilik əldə etməklə onu kodunuzun son dərəcə müdafiəsi üçün daha dəyərli və effektiv edə bilərlər.

Onun bəzi faydaları, məhdudiyyətləri və bir prosesin və ya texnikanın mövcud olması üçün lazım olan hər şeyin olmasına baxmayaraq, onun həqiqi gücü laylı müdafiə strategiyasının bir hissəsi olması ilə bağlıdır; sizin üçün hər kəsdən daha effektiv, faydalı və məhsuldar olması üçün kifayət qədər praktik olmaq lazımdır. JavaScript kodunuzun bütünlüyünü, məxfiliyini və etibarlılığını daim inkişaf edən rəqəmsal landşaftda təmin etməyə kömək edir. 

Qısası, bu, şəxsi məlumatlarınızı qorumağa kömək edən və informasiyanızı qorumağın daha effektiv yolları üzərində düşünməyə təşviq edən bir vasitədir.

Veb inkişafınızı optimallaşdırmaq üçün daha çox alətlər üçün yoxlayın:

Daha çox təhlükəsizlik vasitələri üçün UrvaTools Təhlükəsizlik Bölməsinə daxil olaraq.

UrwaTools Editorial

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

Bülleten

Ən son alətlərimizdən xəbərdar olun