Jedwali la Yaliyomo
JavaScript ni lugha ya kisasa ya programu ambayo huunda maudhui makubwa na yenye nguvu ya tovuti. Inafurahisha, inafanya kazi kwa kanuni ya thread moja. Hiyo inamaanisha kuwa unaweza kufanya operesheni moja tu kwa wakati mmoja. Vitu vinaweza kufanywa moja kwa moja, na vigezo havina aina za tuli zilizowekwa.
JavaScript ni rahisi kwa watengenezaji wengi wa wavuti, na msimbo wake wa programu unaweza kufikiwa na watumiaji na mtu yeyote. Hiyo ndiyo sehemu yenye changamoto zaidi ya kutumia JavaScript kwa watengenezaji wa tovuti. Kwa njia hii, washambuliaji wengi wanaweza kufikia na kutumia kwa urahisi msimbo wa tovuti na udhaifu wa data ambao unaweza kudhuru tovuti na biashara.
Ili kushinda au kuhifadhi msimbo unaozalishwa na JavaScript, wasanidi programu hutumia mbinu inayoitwa JavaScript Obfuscation. Katika makala haya, utachunguza JavaScript Obfuscator, jinsi unavyoweza kulinda na kuhifadhi msimbo wa JS, na umuhimu wa JS obfuscator.
Ufichuzi wa JavaScript ni nini?
Mchakato wa kupata msimbo, ambapo watengenezaji hubadilisha au kurekebisha nambari ya msingi kuwa fomu yenye shida ambayo haiwezi kueleweka na wanadamu kwa urahisi wakati wa kuhakikisha utekelezaji sahihi wa nambari. Tofauti na usimbaji fiche (ambao unahitaji ufunguo wa kusimbua msimbo uliorekebishwa), obfuscation hauhitaji ufunguo wowote kurekebisha msimbo wa msingi.
Kusudi kuu la mchakato huu ni kuzuia au kukomesha ufikiaji usioidhinishwa, uhandisi wa nyuma, na wizi wa mali miliki.
Kwa nini utumie JavaScript Obfuscation?
Obfuscation inaweza kutumika kwa madhumuni na faida mbalimbali kutokana na ambayo hutumiwa, ambayo baadhi yake yametolewa hapa chini:
1-Usalama dhidi ya Wizi
Obfuscation hulinda msimbo wako na taarifa nyeti kutoka kwa wezi na washambuliaji wa mtandao, na hivyo kuwezesha faragha ya mradi wako.
2-Kuzuia hasira
Misimbo iliyofichwa inaweza kufanya iwe vigumu kwa wadukuzi kuzitatua ili ziweze kutumika kwa madhumuni mabaya.
3-Kuhifadhi Maslahi ya Biashara
Obfuscation itahakikisha faida ya ushindani kwa kulinda utekelezaji wa kipekee wa mbinu na mikakati ya mtu.
4-Kulinda habari nyeti
Baadhi ya msimbo ni pamoja na taarifa nyeti, funguo, au mantiki ambayo ni muhimu kwa uendeshaji lakini haipaswi kufichuliwa kwa umma, kuzuia kuvuja kwa maelezo yako na kusaidia habari kuwa kwako tu.
Ufuatao ni mfano wa Obfuscator ya JavaScript:
Nambari ya msingi ya neno Hello katika JS inaonekana kama hii:
kazi salamu(jina) {
kurudi "Halo, " + jina + "!";
}
Uendeshaji wa obfuscation hubadilisha nambari ifuatayo kuwa hii:
kazi _0x2c56(_0x1a73){return 'Hello, '+_0x1a73+'!';}
Misimbo yote miwili ina maana sawa, na matokeo yao hayaleti tofauti, lakini tofauti ya typo husababisha ulinzi mkubwa wa msimbo. Mambo magumu daima ni magumu zaidi kufikia.
Je, ufichuzi wa JavaScript hufanyaje kazi?
Kazi ya obfuscation ya JS imeonyeshwa hapa chini
Mchakato mzima unafuata hatua kadhaa kama vile
1-Kubadilisha jina
Hapa, uingizwaji wa majina tofauti ya maelezo hufanywa na masharti yasiyo na maana (kwa mfano, jina la mtumiaji linakuwa a1b2c3)
Mfano umetolewa hapa chini ili kuelewa vyema
Msimbo wa asili:
kazi calculateTotal(bei, kodi) {
bei ya kurudi + (bei * kodi);
}
Msimbo huu unaweza kuonekana kama hii baada ya kufichwa
Nambari iliyofichwa:
kazi _0x45a1(x,y){return x+(x*y);}
2-Kamba na Usimbuaji wa Nambari
Pia inajulikana kama usimbuaji wa kamba. Ni mchakato ambao data nyeti kama vile URL au funguo za API husimbwa kwa masharti ndani ya msimbo. Ufuatao ni mfano wa Usimbaji fiche wa Kamba:
Msimbo wa asili:
const apiKey = "ABC123";
Toleo lililofichwa limetolewa hapa chini.
Nambari iliyofichwa:
const _0x3d2a = "\x41\x42\x43\x31\x32\x33";
3-Udhibiti wa mtiririko wa gorofa
Kwa fomu fupi inayojulikana kama Code flattening. Miundo changamano ya Msimbo imerahisishwa maoni huondolewa ili kupunguza usomaji iwezekanavyo.
Msimbo wa asili:
Msimbo rahisi unaweza kuonekana kama hii
kazi checkAccess(mtumiaji) {
ikiwa (user.role === "admin") kurudi kweli;
vinginevyo kurudi uwongo;
}
Msimbo uliofichwa:
kazi _0x1a2b(_0x3c4d) {
Rudisha _0x3c4d["\x72\x6f\x6c\x65"] === "\x61\x64\x6d\x69\x6e" ? !0x0 : !0x1;
}
Usomaji umepungua sana, kama inavyoonekana kutoka kwa tofauti kati ya nambari mbili zilizowasilishwa hapo juu.
4-Uingizaji wa Msimbo uliokufa
Ni sawa na Mabadiliko ya Mtiririko wa Kanuni na udhibiti. Ni nyongeza ya vijisehemu vya msimbo visivyo na maana kwenye msimbo asili ili kuifanya isisomeke kidogo.
kazi validateInput(input) {
ikiwa (input.length > 5) kurudi kweli;
vinginevyo kurudi uwongo;
// Msimbo uliokufa hapa chini
const x = 10;
console.log("Hii haiendeshi kamwe");
}
Toleo la kuingiza msimbo uliokufa (Obfuscated) la msimbo huu linaonekana kama hii:
kazi validateInput(input) {
ikiwa (pembejeo.urefu > 5) {
// Nambari iliyokufa ambayo haifanyi chochote muhimu
const unusedVar = Math.random() * 100;
console.log("Hii ni sehemu ya nambari iliyokufa: ", isiyotumikaVar);
kurudi kweli;
} nyingine {
// Msimbo zaidi uliokufa hapa chini
wacha fakeCondition = input.includes("siri");
ikiwa (fakeCondition) {
console.log("Hali hii ni bandia na haina maana");
}
kurudi uwongo;
}
// Msimbo uliokufa usioweza kufikiwa
const x = 10;
const y = 20;
console.log("Hii haitawahi kutekeleza lakini inachanganya washambuliaji: ", x + y);
}
5.Mbinu za kupambana na utatuzi
Mbinu ya kuzuia utatuzi katika JS ni ya kipekee na inahusisha taarifa za utatuzi, utambuzi wa kiweko, na mashambulizi ya muda ili kuzuia msimbo na utatuzi.
setInterval(function(){
ikiwa (aina ya console._commandLineAPI !== 'haijafafanuliwa') {
tahadhari("Debugger imegunduliwa!");
window.location.href = "kuhusu: tupu";
}
}, 1000);
Nambari hiyo hiyo, inapobadilishwa kuwa toleo lililofichwa kwa kutumia zana ya kuficha ya JS. Imekuwa ngumu kuelewa na kuchambua kwa kutumia safu ya ziada ya kupambana na utatuzi.
Nambari iliyofichwa:
(kazi () {
var _0x3c87 = ['_commandLineAPI', 'haijafafanuliwa', 'kuhusu:tupu'];
(kazi (_0x4d1b99, _0x1ea782) {
var _0x223b1b = kazi (_0x234219) {
wakati (--_0x234219) {
_0x4d1b99['push'](_0x4d1b99['shift']());
}
};
_0x223b1b(++_0x1ea782);
}(_0x3c87, 0x18f));
var _0x4a68 = kazi (_0x4d1b99, _0x1ea782) {
_0x4d1b99 = _0x4d1b99 - 0x0;
var _0x223b1b = _0x3c87[_0x4d1b99];
kurudi _0x223b1b;
};
setInterval(kazi () {
ikiwa (aina ya kiweko[_0x4a68('0x0')] !== _0x4a68('0x1')) {
tahadhari('Debugger imegunduliwa!');
dirisha['eneo']['href'] = _0x4a68('0x2');
}
}, 0x3e8);
})();
Hizi zilikuwa baadhi tu ya hatua rahisi (mbinu) za jinsi kipande cha msimbo cha moja kwa moja na muhimu kinaweza kubadilishwa hadi kiwango cha juu zaidi cha ugumu, na kuifanya ionekane kama msimbo wa hali ya juu na changamano kwa kutumia zana ya kuficha.
Mapendekezo ya Mazoezi ya Obfuscation katika JavaScript
Kwa mazoezi bora ya kuficha katika JS, kuna mapendekezo kadhaa ya kuiweka katika vitendo.
Uteuzi wa Zana za kuaminika
Uendeshaji wa obfuscators zinazoaminika kama vile JavaScript Obfuscator au UglifyJS ili kuondoa mabadiliko thabiti.
2-Kuficha na Hatua zingine za usalama
Obfuscation ni safu ya kuanza ya ulinzi. Kuoanisha na mbinu tofauti kama vile majaribio makali, mazoea salama ya usimbaji, n.k kunaweza kuongeza ulinzi usioweza kuvunjika kwenye mradi wako.
Nyaraka za Msimbo wa 3
Hifadhi toleo wazi la msimbo asili na kukodisha kwa utatuzi wa siku zijazo. Itakuruhusu kufikia msimbo wako asili, na hivyo kurahisisha mchakato wa marekebisho.
4-Kazi
Endelea kusasishwa kuhusu vitisho vinavyojitokeza na urekebishe mbinu zako za kuficha ipasavyo.
Mazingatio ya Maadili
Wazo la kuficha lilikuja na hisia ya ulinzi wa kimaadili wa miradi yako dhidi ya mashambulizi ya mtandao. Kwa hivyo, matumizi yake mabaya yanaweza kusababisha hali mbaya, kama vile:
1-Kupeleka programu hasidi
Wahalifu wa mtandao mara nyingi hutumia mbinu ya kuficha kuficha maandishi yao hatari au rekodi za uhalifu.
2-Mazoea ya udanganyifu
Obfuscation pia inaweza kuvamia faragha ya mtu, kufuatilia hati, n.k. Daima ni muhimu kuzingatia matumizi sahihi ya mbinu hizo. Kudumisha usawa kati ya mambo kama haya ni hatua ya kwanza ya kufanya obfuscation.
Mapungufu ya Obfuscation
Wakati kutumia obfuscation kulinda nambari na miradi yako ni faida sana, sio ujinga. Ina baadhi ya mapungufu ambayo yanaweza kukukasirisha wakati wa kuitumia. Baadhi ya mapungufu yake ambayo hayajafikiwa yanajadiliwa hapa chini:
1-Athari za Utendaji:
Ikiwa msimbo wako umefichwa zaidi ya inavyohitajika, itaathiri vibaya muda wa uendeshaji wa msimbo wako, hasa ikiwa mbinu za uzalishaji unaobadilika au zisizohitajika zitatumiwa.
2-Ukosefu wa usalama kamili:
Wadukuzi waliobobea au washambuliaji wanaweza kutumia ufichuzi kwenye msimbo wako ambao tayari umefichwa, hatimaye bila kuacha ulinzi wowote wa msimbo wako.
3-Changamoto za Utatuzi:
Nambari iliyofichwa daima ni ngumu kutatua, kudumisha, au kukuza kwa sababu ya kuongezwa kwa mistari isiyo ya lazima inayotumiwa kwa ulinzi wake. Ni ngumu zaidi kwa watengenezaji wa programu ambao hawakuwa sehemu ya timu ya maendeleo ya nambari asili na nambari iliyofichwa.
4-Masuala ya Utangamano:
Mbinu maalum za ufichuzi hazipatikani kwenye vivinjari vyote au mazingira na hivyo kuongeza uwezekano wa maswala ya kiufundi katika pato au kufanya kazi kwa nambari.
Hitimisho
Ufichuzi wa JavaScript ni zana yenye nguvu na yenye manufaa ya kulinda msimbo wa mtu dhidi ya wizi, wadukuzi, washambuliaji, kuchezea na uhandisi wa nyuma. Ingawa ni ngao ya ulinzi kwa taarifa zako nyeti na mali miliki iliyohifadhiwa kwenye kompyuta yako kwa kuweka alama, sio suluhisho la kudumu au lisiloweza kushindwa kwa usalama.
Msanidi programu lazima asitegemee tu obfuscation. Kwa kuelewa na kupata ujuzi wa kutosha wa mbinu, manufaa na mapungufu yake, wasanidi programu wanaweza kuifanya iwe ya thamani zaidi na yenye ufanisi kwa ulinzi wa mwisho wa msimbo wako.
Ingawa ina faida fulani, mapungufu, na kila kitu ambacho mchakato au mbinu inahitaji kuwepo, nguvu yake ya kweli iko katika ukweli kwamba ni sehemu ya mkakati wa ulinzi wa tabaka; unahitaji kufanya mazoezi ya kutosha ili kuifanya iwe na ufanisi zaidi, kusaidia, na yenye tija kwako kuliko mtu mwingine yeyote. Inasaidia kuhakikisha uadilifu, usiri na uaminifu wa msimbo wako wa JavaScript katika mazingira ya kidijitali yanayoendelea kubadilika.
Kwa kifupi, ni zana ya kukusaidia kudumisha faragha yako na kukuhamasisha kufikiria njia bora zaidi za kulinda habari yako.
Kwa zana zaidi za kuboresha ukuzaji wako wa wavuti, angalia:
Kwa zana zaidi za usalama, tembelea Sehemu ya Usalama ya UrwaTools.