JavaScript ir mūsdienīga programmēšanas valoda, kas rada plašu un dinamisku mājas lapas saturu. Interesanti, ka tas darbojas pēc viena pavediena principa. Tas nozīmē, ka vienlaikus var veikt tikai vienu darbību. Objektus var izveidot tieši, un mainīgajiem nav fiksētu statisko tipu.
JavaScript ir viegli daudziem tīmekļa izstrādātājiem, un tā lietojumprogrammas kods ir pieejams lietotājiem un ikvienam. Tā ir vissarežģītākā JavaScript izmantošanas daļa vietņu izstrādātājiem. Tādā veidā daudzi uzbrucēji var viegli piekļūt vietnes kodam un datu ievainojamībai, kas var kaitēt vietnei un biznesam, un izmantot to.
Lai pārvarētu vai saglabātu JavaScript ģenerēto kodu, izstrādātāji izmanto paņēmienu, ko sauc par JavaScript Obfuscation. Šajā rakstā jūs izpētīsiet JavaScript Obfuscator, kā jūs varat aizsargāt un saglabāt JS kodu un JS obfuscator nozīmi.
Kas ir JavaScript slēpšana?
Koda drošības process, kurā izstrādātāji maina vai modificē pamatkodu problemātiskā formā, ko cilvēki nevar viegli saprast, vienlaikus nodrošinot pareizu koda izpildi. Atšķirībā no šifrēšanas (kas prasa atslēgu, lai atšifrētu modificēto kodu), slēpšanai nav nepieciešama nekāda atslēga, lai pārstrukturētu pamatkodu.
Šī procesa galvenais mērķis ir novērst vai apturēt nesankcionētu piekļuvi, reverso inženieriju un intelektuālā īpašuma zādzību.
Kāpēc izmantot JavaScript slēpšanu?
Obfuscation var kalpot dažādiem mērķiem un priekšrocībām, kuru dēļ tā tiek izmantota, no kurām dažas ir norādītas zemāk:
1-Drošība pret zādzībām
Slēpšana aizsargā jūsu kodu un sensitīvu informāciju no kiberzagļiem un uzbrucējiem, tādējādi nodrošinot jūsu projekta konfidencialitāti.
2-Temperamenta profilakse
Slēpti kodi var apgrūtināt hakeru atkļūdošanu, lai tos varētu izmantot ļaunprātīgiem mērķiem.
3-Biznesa interešu saglabāšana
Slēpšana nodrošinās konkurences priekšrocības, aizsargājot savas taktikas un stratēģiju unikālo īstenošanu.
4-Sensitīvas informācijas aizsardzība
Daži kodi ietver sensitīvu informāciju, atslēgas vai loģiku, kas ir svarīga darbībai, bet nedrīkst tikt atklāta sabiedrībai, novēršot jūsu informācijas noplūdi un palīdzot informācijai būt tikai jums.
Tālāk ir JavaScript Obfuscator piemērs:
Vārda Hello pamatkods JS izskatās šādi:
funkcija greet(nosaukums) {
atgriezties "Sveiki, " + vārds + "!";
}
Aizsegšanas darbība pārvērš šādu kodu:
function _0x2c56(_0x1a73){return 'Sveiki, '+_0x1a73+'!';}
Abiem kodiem ir vienāda nozīme, un to izvade nerada nekādas atšķirības, bet drukas kļūdu atšķirība rada ievērojamu koda aizsardzību. Sarežģītām lietām vienmēr ir grūtāk piekļūt.
Kā darbojas JavaScript slēpšana?
JS slēpšanas darbība ir parādīta zemāk
Viss process notiek šādi:
1-Mainīgā pārdēvēšana
Šeit aprakstošo mainīgo nosaukumu aizstāšana tiek veikta ar bezjēdzīgām virknēm (piemēram, lietotājvārds kļūst par a1b2c3)
Tālāk ir sniegts piemērs, lai labāk saprastu
Oriģinālais kods:
funkcija calculateTotal(cena, nodoklis) {
atgriešanas cena + (cena * nodoklis);
}
Šis kods var izskatīties šādi pēc apslēpšanas
Slēpts kods:
funkcija _0x45a1(x,y){atgriezt x+(x*y);}
2 virkņu un ciparu kodējums
To sauc arī par virknes šifrēšanu. Tas ir process, kurā sensitīvi dati, piemēram, URL vai API atslēgas, tiek kodēti ar virknēm kodā. Tālāk ir sniegts virknes šifrēšanas piemērs:
Oriģinālais kods:
const apiKey = "ABC123";
Slēptā versija ir dota zemāk.
Slēpts kods:
const _0x3d2a = "\x41\x42\x43\x31\x32\x33";
3-Kontroles plūsmas saplacināšana
Īsā formā pazīstams kā koda saplacināšana. Sarežģītas koda struktūras ir vienkāršotas, komentāri tiek noņemti, lai pēc iespējas samazinātu lasāmību.
Oriģinālais kods:
Vienkāršs kods var izskatīties šādi
funkcija checkAccess(lietotājs) {
if (user.role === "admin") atgriež true;
citādi atgriezties nepatiesi;
}
Slēpts kods:
funkcija _0x1a2b(_0x3c4d) {
return _0x3c4d["\x72\x6f\x6c\x65"] === "\x61\x64\x6d\x69\x6e" ? !0x0 : !0x1;
}
Lasāmība ir ievērojami samazināta, kā redzams no atšķirības starp diviem iepriekš minētajiem kodiem.
4-mirušā koda ievietošana
Tas ir līdzīgs koda saplacināšanai un kontroles plūsmas izmaiņām. Tā ir bezjēdzīgu koda fragmentu pievienošana oriģinālajam kodam, lai padarītu to mazāk lasāmu.
funkcija validateInput(ievade) {
if (input.length > 5) atgriež true;
citādi atgriezties nepatiesi;
// Mirušais kods zemāk
const x = 10;
console.log("Tas nekad nedarbojas");
}
Šī koda mirušā koda ievietošanas versija (Obfuscated) izskatās šādi:
funkcija validateInput(ievade) {
if (input.length > 5) {
// Miris kods, kas nedara neko noderīgu
const unusedVar = Math.random() * 100;
console.log("Šī ir daļa no mirušā koda: ", unusedVar);
atgriešanās true;
} citādi {
// Vairāk mirušā koda zemāk
let fakeCondition = input.includes("slepens");
if (fakeCondition) {
console.log("Šis nosacījums ir viltus un nebūtisks");
}
atgriešanās nepatiesa;
}
// Nesasniedzams mirušais kods
const x = 10;
const y = 20;
console.log("Tas nekad neizpildīs, bet mulsina uzbrucējus: ", x + y);
}
5. Atkļūdošanas paņēmieni
JS pretatkļūdošanas tehnika ir unikāla un ietver atkļūdotāja paziņojumus, konsoles atklāšanu un laika uzbrukumus, lai kavētu kodu un atkļūdošanu.
setInterval(funkcija(){
if (console._commandLineAPI tips !== 'nedefinēts') {
brīdinājums("Konstatēts atkļūdotājs!");
window.location.href = "par:tukšs";
}
}, 1000);
Tas pats kods, kad tas tiek modificēts slēptā versijā, izmantojot JS slēpšanas rīku. To ir kļuvis grūtāk saprast un analizēt, izmantojot papildu pretatkļūdošanas slāni.
Slēpts kods:
(funkcija () {
var _0x3c87 = ['_commandLineAPI', 'nedefinēts', 'par:tukšs'];
(funkcija (_0x4d1b99, _0x1ea782) {
var _0x223b1b = funkcija (_0x234219) {
kamēr (--_0x234219) {
_0x4d1b99['push'](_0x4d1b99['shift']());
}
};
_0x223b1b(++_0x1ea782);
}(_0x3c87, 0x18f));
var _0x4a68 = funkcija (_0x4d1b99, _0x1ea782) {
_0x4d1b99 = _0x4d1b99 - 0x0;
var _0x223b1b = _0x3c87[_0x4d1b99];
atgriešanās _0x223b1b;
};
setInterval(funkcija () {
if (konsoles tips[_0x4a68('0x0')] !== _0x4a68('0x1')) {
alert('Atkļūdotājs noteikts!');
window['location']['href'] = _0x4a68('0x2');
}
}, 0x3e8);
})();
Tie bija tikai daži no vienkāršajiem soļiem (paņēmieniem), kā vienkāršu un būtisku koda gabalu var pārvērst visaugstākajā grūtības pakāpē, padarot to par ļoti progresīvu un sarežģītu kodu, izmantojot apslēpšanas rīku.
Prakses ieteikumi slēpšanai JavaScript
Lai iegūtu labāko slēpšanas praksi JS, ir vairāki ieteikumi, kā to īstenot praksē.
Uzticamu rīku izvēle
Uzticamu obfuscatoru, piemēram, JavaScript, Obfuscator vai UglifyJS, darbība, lai noņemtu spēcīgas transformācijas.
2-Slēpšana ar citiem drošības pasākumiem
Obfuscation ir starta aizsardzības slānis. Pārī ar dažādām metodēm, piemēram, stingru testēšanu, drošu kodēšanas praksi utt., Jūsu projektam var pievienot nesalaužamu aizsardzību.
3 kodu dokumentācija
Saglabājiet skaidru oriģinālā koda un fraktēšanas versiju turpmākai atkļūdošanai. Tas ļaus jums piekļūt sākotnējam kodam, tādējādi atvieglojot grozījumu procesu.
4-Aktivitāte
Sekojiet jaunākajai informācijai par jaunajiem draudiem un attiecīgi modificējiet savu slēpšanas taktiku.
Ētiskie apsvērumi
Ideja par apslēpšanu radīja jūsu projektu ētiskās aizsardzības sajūtu pret kiberuzbrukumiem. Tādējādi tā ļaunprātīga izmantošana var izraisīt sliktus apstākļus, piemēram:
1-Ļaunprātīgas programmatūras izvietošana
Kibernoziedznieki bieži izmanto slēpšanas paņēmienu, lai slēptu savus bīstamos skriptus vai sodāmību.
2-Maldinoša prakse
Slēpšana var arī iejaukties privātumā, izsekot skriptus utt. Vienmēr ir svarīgi apsvērt šādu metožu pareizu izmantošanu. Līdzsvara saglabāšana starp šādām lietām ir pirmais solis, lai veiktu apslēpšanu.
Slēpšanas ierobežojumi
Lai gan slēpšanas izmantošana, lai aizsargātu kodu un projektus, ir ļoti izdevīga, tā nav droša. Tam ir daži ierobežojumi, kas var kairināt jūs lietošanas laikā. Dažas no tās neapmierinātajām nepilnībām ir aplūkotas turpmāk:
1-Veiktspējas ietekme:
Ja jūsu kods ir slēpts vairāk nekā nepieciešams, tas negatīvi ietekmēs jūsu koda izpildlaiku, galvenokārt, ja tiek izmantotas dinamiskās ģenerēšanas vai liekas koda metodes.
2-Absolūtas drošības trūkums:
Eksperti hakeri vai uzbrucēji var izmantot jau apslēptā koda slēpšanu, galu galā neatstājot jūsu koda aizsardzību.
3-Atkļūdošanas izaicinājumi:
Slēpto kodu vienmēr ir grūti atkļūdot, uzturēt vai attīstīt, jo tā aizsardzībai tiek pievienotas nevajadzīgas līnijas. Vēl grūtāk ir programmētājiem, kuri nebija daļa no sākotnējā koda un slēptā koda izstrādes komandas.
4-Saderības jautājumi:
Specifiskas slēpšanas metodes nav pieejamas visās pārlūkprogrammās vai vidēs, tādējādi palielinot tehnisku problēmu iespējamību koda izvadē vai darbībā.
Secinājums
JavaScript slēpšana ir spēcīgs un izdevīgs rīks, lai aizsargātu savu kodu pret zādzībām, hakeriem, uzbrucējiem, manipulācijām un reverso inženieriju. Lai gan tas ir aizsardzības vairogs jūsu sensitīvajai informācijai un intelektuālajam īpašumam, kas saglabāts jūsu datorā, kodējot, tas nav pastāvīgs vai neuzvarams drošības risinājums.
Attīstītājs nedrīkst paļauties tikai uz slēpšanu. Izprotot un iegūstot pietiekamas zināšanas par tā paņēmieniem, priekšrocībām un ierobežojumiem, izstrādātāji var padarīt to vērtīgāku un efektīvāku, lai nodrošinātu jūsu koda pilnīgu aizsardzību.
Lai gan tam ir dažas priekšrocības, ierobežojumi un viss, kas procesam vai paņēmienam ir nepieciešams, lai pastāvētu, tā patiesais spēks slēpjas faktā, ka tā ir daļa no slāņainas aizsardzības stratēģijas; Jums ir jāpraktizē pietiekami, lai padarītu to efektīvāku, noderīgāku un produktīvāku jums nekā jebkurš cits. Tas palīdz nodrošināt JavaScript koda integritāti, konfidencialitāti un uzticamību pastāvīgi mainīgajā digitālajā vidē.
Īsāk sakot, tas ir rīks, kas palīdz saglabāt jūsu privātumu un motivē domāt par efektīvākiem veidiem, kā aizsargāt savu informāciju.
Lai iegūtu vairāk rīku tīmekļa izstrādes optimizēšanai, skatiet:
Lai iegūtu vairāk drošības rīku, apmeklējiet UrwaTools drošības sadaļu.