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.
JavaScript obfuscation nədir?
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.
JavaScript Obfuscation istifadə niyə?
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:
1-Oğurluğa qarşı təhlükəsizlik
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.
2-Temper qarşısının alınması
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.
3-Biznes maraqlarının qorunması
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.
4-Həssas məlumatların mühafizəsi
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.
JavaScript Obfuscation necə işləyir?
JS obfuscation-un işləməsi aşağıda göstərilib
Bütün proses bəzi addımları belə izləyir
1-Dəyişənin adının dəyişdirilməsi
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);}
2-String &number Kodlama
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";
3-Nəzarət axını yastılama
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.
4-Dead Kodu Daxil Etmək
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);
}
5.Debugging-ə qarşı mübarizə üsulları
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.
JavaScript-də Obfuscation üçün praktik təkliflər
Ən yaxşı obfuskasiya üsulu üçün onu tətbiq etmək üçün bir neçə məsləhət var.
Etibarlı Alətlərin seçilməsi
JavaScript Obfuscator və ya UglifyJS kimi etibarlı obfuscators əməliyyat möhkəm dönüşümləri aradan qaldırılması üçün.
2-Digər təhlükəsizlik tədbirləri ilə obfuskasiya
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.
3-Kod Sənədləşmə
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.
4-Aktivlik
Yeni yaranan təhlükələr barədə yenilənməni və obfuskasiya taktikanızı müvafiq olaraq dəyişdirin.
Etik məsələlər
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:
1-Malware-i yerləşdirmək
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.
2-Aldadıcı adətlə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.
Obfuskasiyanın məhdudluğu
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:
1-Performans Təsiri:
Ə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.
2-Mütləq təhlükəsizliyin olmaması:
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.
3-Debugging çətinlikləri:
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.
4-Uyğunluq məsələləri:
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.
Yekun
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.