Table of Contents

JavaScript është një gjuhë moderne programimi që krijon përmbajtje të gjerë dhe dinamike të faqes në internet. Është interesante se funksionon në parimin e një fije. Kjo do të thotë që ju mund të kryeni vetëm një operacion në të njëjtën kohë. Objektet mund të bëhen drejtpërdrejt dhe variablat nuk kanë lloje statike fikse.

JavaScript është i lehtë për shumë zhvillues uebi dhe kodi i tij i aplikacionit është i arritshëm nga përdoruesit dhe kushdo. Kjo është pjesa më sfiduese e përdorimit të JavaScript për zhvilluesit e faqeve të internetit. Në këtë mënyrë, shumë sulmues mund të aksesojnë dhe shfrytëzojnë lehtësisht kodin e faqes në internet dhe dobësitë e të dhënave që mund të dëmtojnë faqen e internetit dhe biznesin.

Për të kapërcyer ose ruajtur kodin e gjeneruar nga JavaScript, zhvilluesit përdorin një teknikë të quajtur JavaScript Obfuscation. Në këtë artikull, ju do të eksploroni JavaScript Obfuscator, si mund të mbroni dhe ruani kodin JS dhe rëndësinë e obfuscatorit JS.

Procesi për të siguruar kodin, në të cilin zhvilluesit ndryshojnë ose modifikojnë kodin bazë në një formë problematike që nuk mund të kuptohet lehtësisht nga njerëzit duke siguruar ekzekutimin e saktë të kodit. Ndryshe nga kriptimi (i cili kërkon një çelës për të deshifruar kodin e modifikuar), obfuscation nuk kërkon asnjë çelës për të ristrukturuar kodin bazë. 

Qëllimi kryesor i këtij procesi është të parandalojë ose ndalojë aksesin e paautorizuar, inxhinierinë e kundërt dhe vjedhjen e pronës intelektuale.

Obfuscation mund të shërbejë për qëllime dhe përfitime të ndryshme për shkak të të cilave përdoret, disa prej të cilave janë dhënë më poshtë:

Obfuscation mbron kodin tuaj dhe informacionin tuaj të ndjeshëm nga hajdutët dhe sulmuesit kibernetikë, duke mundësuar kështu privatësinë e projektit tuaj.

Kodet e errëta mund ta bëjnë të vështirë për hakerat t'i korrigjojnë ato në mënyrë që ato të mund të përdoren për qëllime keqdashëse.

Obfuscation do të sigurojë një avantazh konkurrues duke mbrojtur zbatimet unike të taktikave dhe strategjive të dikujt.

Disa kode përfshijnë informacione të ndjeshme, çelësa ose logjikë që janë të rëndësishme për funksionimin, por nuk duhet të ekspozohen ndaj publikut, duke parandaluar rrjedhjen e informacionit tuaj dhe duke ndihmuar informacionin të jetë vetëm për ju.

Më poshtë është një shembull i një JavaScript Obfuscator:

Kodi bazë i fjalës Hello në JS duket kështu:

funksioni përshëndetje (emri) {

    ktheni "Përshëndetje", + emri + "!";

}

Operacioni i obfuscation konverton kodin e mëposhtëm në këtë:

funksioni _0x2c56(_0x1a73){kthimi 'Përshëndetje, '+_0x1a73+'!';}

Të dy kodet kanë të njëjtin kuptim dhe dalja e tyre nuk rezulton në asnjë ndryshim, por ndryshimi i gabimeve të shtypit rezulton në mbrojtje të konsiderueshme të kodit. Gjërat komplekse janë gjithmonë më të vështira për t'u aksesuar.

Funksionimi i errësimit të JS tregohet më poshtë

I gjithë procesi ndjek disa hapa si 

Këtu, zëvendësimi i emrave përshkrues të variablave bëhet me vargje të pakuptimta (p.sh., emri i përdoruesit bëhet a1b2c3)

Një shembull është dhënë më poshtë për të kuptuar më mirë

Kodi origjinal:

funksioni calculateTotal(çmimi, taksa) {

    çmimi i kthimit + (çmimi * taksa);

}

Ky kod mund të duket kështu pas errësimit

Kodi i errët:

funksioni _0x45a1(x,y){kthimi x+(x*y);}

Njihet edhe si kriptim vargjesh. Është një proces me të cilin të dhënat e ndjeshme si URL-të ose çelësat API kodohen me vargje brenda kodit. Më poshtë është një shembull i enkriptimit të vargut:

Kodi origjinal:

const apiKey = "ABC123";

Versioni i errët është dhënë më poshtë.

Kodi i errët:

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

 Në formë të shkurtër e njohur si rrafshimi i kodit. Strukturat komplekse të kodit janë të thjeshtuara komentet hiqen për të zvogëluar lexueshmërinë sa më shumë që të jetë e mundur.

Kodi origjinal:

Një kod i thjeshtë mund të duket si ky 

function checkAccess(user) {

    if (user.role === "admin") return true;

    përndryshe kthimi i rremë;

}

Kodi i errët:

funksioni _0x1a2b(_0x3c4d) {

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

}

 Lexueshmëria është ulur shumë, siç vërehet nga ndryshimi midis dy kodeve të paraqitura më sipër.

Është e ngjashme me rrafshimin e kodit dhe kontrollin e rrjedhës Alteration. Është shtimi i fragmenteve të pakuptimta të kodit në kodin origjinal për ta bërë atë më pak të lexueshëm.

funksioni validateInput(input) {

    nëse (input.length > 5) kthen true;

    përndryshe kthimi i rremë;

    // Kodi i vdekur më poshtë

    const x = 10;

    console.log("Kjo nuk funksionon kurrë");

}

Versioni i futjes së kodit të vdekur (Obfuscated) i këtij kodi duket  kështu:

funksioni validateInput(input) {

    if (input.length > 5) {

        Kodi i vdekur që nuk bën asgjë të dobishme

        const unusedVar = Math.random() * 100;

        console.log("Kjo është pjesë e kodit të vdekur: ", unusedVar);

        kthimi i vërtetë;

    } tjetër {

        // Më shumë kod i vdekur më poshtë

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

        if (fakeCondition) {

            console.log("Kjo gjendje është e rreme dhe e parëndësishme");

        }

        kthimi i rremë;

    }

    // Kodi i vdekur i paarritshëm

    const x = 10;

    const y = 20;

    console.log("Kjo nuk do të ekzekutojë kurrë, por ngasë sulmuesit: ", x + y);

}

Teknika kundër korrigjimit në JS është unike dhe përfshin deklaratat e korrigjuesit, zbulimin e konsolës dhe sulmet e kohës për të penguar kodin dhe korrigjimin.

setInterval(function(){

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

        alarm("Zbulohet korrigjuesi!");

        window.location.href = "rreth:bosh";

    }

}, 1000);

I njëjti kod, kur modifikohet në një version të errët duke përdorur mjetin JS obfuscation. Është bërë më e vështirë për t'u kuptuar dhe analizuar duke përdorur një shtresë shtesë anti-korrigjimi.

Kodi i errët:

(funksioni () {

    var _0x3c87 = ['_commandLineAPI', 'i papërcaktuar', 'rreth:bosh'];

    (funksioni (_0x4d1b99, _0x1ea782) {

        var _0x223b1b = funksion (_0x234219) {

            ndërsa (--_0x234219) {

                _0x4d1b99['shtytje'](_0x4d1b99['ndërrim']());

            }

        };

        _0x223b1b(++_0x1ea782);

    }(_0x3c87, 0x18f));

    var _0x4a68 = funksion (_0x4d1b99, _0x1ea782) {

        _0x4d1b99 = _0x4d1b99 - 0x0;

        var _0x223b1b = _0x3c87[_0x4d1b99];

        kthimi _0x223b1b;

    };

    setInterval(funksioni () {

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

            alert('Zbulohet korrigjuesi!');

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

        }

    }, 0x3e8);

})();

Këto ishin vetëm disa nga hapat (teknikat) e thjeshta se si një pjesë e drejtpërdrejtë dhe thelbësore e kodit mund të konvertohet në nivelin më të lartë të vështirësisë, duke e bërë atë të duket si një kod shumë i avancuar dhe kompleks duke përdorur një mjet errësimi.

Për praktikën më të mirë të errësimit në JS, ka disa sugjerime për ta vënë atë në praktikë.

Funksionimi i obfuscatorëve të besuar si JavaScript Obfuscator ose UglifyJS për të hequr transformimet e fuqishme.  

Obfuscation është shtresa fillestare e mbrojtjes. Kombinimi i tij me teknika të ndryshme si testimi rigoroz, praktikat e sigurta të kodimit, etj mund të shtojë një mbrojtje të pathyeshme në projektin tuaj.

Ruani një version të qartë të kodit origjinal dhe chartering për korrigjimin e ardhshëm. Kjo do t'ju lejojë të përdorni kodin tuaj origjinal, duke e bërë kështu më të lehtë procesin e ndryshimit.

Qëndroni të përditësuar për kërcënimet në zhvillim dhe modifikoni taktikat tuaja të errësimit në përputhje me rrethanat.

Ideja e errësimit erdhi me një ndjenjë të mbrojtjes etike të projekteve tuaja nga sulmet kibernetike. Kështu, keqpërdorimi i tij mund të çojë në rrethana të këqija, të tilla si:

Kriminelët kibernetikë shpesh përdorin teknikën e errësimit për të fshehur skenarët e tyre të rrezikshëm ose të dhënat kriminale.

Obfuscation gjithashtu mund të pushtojë privatësinë e dikujt, të gjurmojë skriptet, etj. Është gjithmonë thelbësore të merret parasysh përdorimi i duhur i teknikave të tilla. Ruajtja e ekuilibrit midis gjërave të tilla është hapi i parë për të kryer errësim.

Ndërsa përdorimi i errësimit për të mbrojtur kodin dhe projektet tuaja është shumë i dobishëm, nuk është i pagabueshëm. Ka disa kufizime që mund t'ju irritojnë gjatë përdorimit të tij. Disa nga boshllëqet e tij të paplotësuara diskutohen më poshtë:

Nëse kodi juaj është i errët më shumë se sa duhet, ai do të ndikojë negativisht në kohën e ekzekutimit të kodit tuaj, kryesisht nëse përdoren gjenerim dinamik ose metoda të tepërta të kodit.

Hakerat ose sulmuesit ekspertë mund të përdorin errësim në kodin tuaj tashmë të errët, duke mos lënë përfundimisht mbrojtje të kodit tuaj.

Kodi i errët është gjithmonë i ndërlikuar për t'u korrigjuar, mirëmbajtur ose zhvilluar për shkak të shtimit të linjave të panevojshme të përdorura për mbrojtjen e tij. Është edhe më e vështirë për programuesit që nuk ishin pjesë e ekipit të zhvillimit të kodit origjinal dhe kodit të errët.

Teknikat specifike të errësimit nuk janë të aksesueshme në të gjithë shfletuesit ose mjediset, duke rritur kështu shanset për probleme teknike në dalje ose punën e kodit.

Obfuscation JavaScript është një mjet i fuqishëm dhe i dobishëm për të mbrojtur kodin e dikujt nga vjedhja, hakerat, sulmuesit, manipulimi dhe inxhinieria e kundërt. Ndërsa është një mburojë mbrojtëse për informacionin tuaj të ndjeshëm dhe pronën intelektuale të ruajtura në kompjuterin tuaj duke koduar, nuk është një zgjidhje e përhershme ose e pamposhtur për sigurinë.

 Zhvilluesi nuk duhet të mbështetet thjesht në errësim. Duke kuptuar dhe marrë njohuri të mjaftueshme për teknikat, përfitimet dhe kufizimet e tij, zhvilluesit mund ta bëjnë atë më të vlefshëm dhe efektiv për mbrojtjen përfundimtare të kodit tuaj.

Ndërsa ka disa përfitime, kufizime dhe gjithçka që një proces ose teknikë ka nevojë për të ekzistuar, fuqia e tij e vërtetë qëndron në faktin se është pjesë e një strategjie mbrojtëse me shtresa; ju duhet të praktikoni mjaftueshëm për ta bërë atë më efektive, të dobishme dhe produktive për ju se kushdo tjetër. Ndihmon për të siguruar integritetin, konfidencialitetin dhe besueshmërinë e kodit tuaj JavaScript në peizazhin dixhital gjithnjë në zhvillim. 

Me pak fjalë, është një mjet për t'ju ndihmuar të ruani privatësinë tuaj dhe ju motivon të mendoni për mënyra më efektive për të mbrojtur informacionin tuaj.

Për më shumë mjete për të optimizuar zhvillimin tuaj të uebit, shikoni:

Për më shumë mjete sigurie, vizitoni Seksionin e Sigurisë UrwaTools.

Pyetje të Shpeshta

  • No, the JS obfuscation can be reversed. Once the code is obfuscated, it cannot be returned to its original form. It is a one-way process. It is always recommended to keep a copy of your original code.
  • It is a technique by which a programmer adds security to his project. It is very beneficial technique used by programmers to complicate your code against theft, attackers, programmers, hackers.

  • Obfuscation works by defense layer strategy, by adding meaningless lines of code in your original Can code to make it less readable for others thus adding a layer of privacy.

  • No, the JS obfuscation can be reversed. Once the code is obfuscated, it cannot be returned to its original form. It is a one-way process. It is always recommended to keep a copy of your original code.

UrwaTools Editorial

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

Buletin

Qëndroni të azhurnuar me mjetet tona më të fundit