Съдържание
JavaScript е модерен език за програмиране, който създава обширно и динамично съдържание на уебсайта. Интересното е, че работи на принципа на една нишка. Това означава, че можете да извършвате само една операция наведнъж. Обектите могат да се правят директно и променливите нямат фиксирани статични типове.
JavaScript е лесен за много уеб разработчици и неговият приложен код е достъпен за потребители и всеки. Това е най-предизвикателната част от използването на JavaScript за разработчици на уебсайтове. По този начин много нападатели могат лесно да получат достъп и да използват уязвимостите в кода на уебсайта и данните, които могат да навредят на уебсайта и бизнеса.
За да преодолеят или запазят кода, генериран от JavaScript, разработчиците използват техника, наречена JavaScript Obfuscation. В тази статия ще разгледате JavaScript Obfuscator, как можете да защитите и запазите JS код и значението на JS obfuscator.
Какво е JavaScript обфускиране?
Процесът за защита на кода, при който разработчиците променят или модифицират основния код в проблемна форма, която не може да бъде разбрана лесно от хората, като същевременно се гарантира правилното изпълнение на кода. За разлика от криптирането (което изисква ключ за декодиране на модифицирания код), обфускирането не изисква никакъв ключ за преструктуриране на основния код.
Основната цел на този процес е да се предотврати или спре неоторизиран достъп, обратно инженерство и кражба на интелектуална собственост.
Защо да използвате JavaScript Obfuscation?
Обфускацията може да служи за различни цели и ползи, поради които се използва, някои от които са дадени по-долу:
1-Сигурност срещу кражба
Обфускирането защитава вашия код и чувствителна информация от киберкрадци и нападатели, като по този начин позволява поверителността на вашия проект.
2-Превенция на темперамента
Обфускираните кодове могат да затруднят хакерите да ги отстраняват грешки, така че да могат да се използват за злонамерени цели.
3-Запазване на бизнес интересите
Обфускацията ще осигури конкурентно предимство, като запази уникалните реализации на нечии тактики и стратегии.
4-Защита на чувствителната информация
Някои кодове включват чувствителна информация, ключове или логика, които са важни за работата, но не трябва да бъдат публично изложени, предотвратявайки изтичането на вашата информация и помагайки на информацията да бъде само за вас.
Следва пример за JavaScript обфускатор:
Основният код на думата Hello в JS изглежда така:
function greet(name) {
връщане на "Hello, " + name + "!";
}
Операцията на обфускиране преобразува следния код в това:
function _0x2c56(_0x1a73){return 'Hello, '+_0x1a73+'!';}
И двата кода имат еднакво значение и изходът им не води до разлика, но разликата в печатните грешки води до значителна защита на кода. Сложните неща винаги са по-трудни за достъп.
Как работи JavaScript обфускацията?
Работата на JS обфускацията е показана по-долу
Целият процес следва няколко стъпки като
1-Преименуване на променливи
Тук замяната на описателни имена на променливи се извършва с безсмислени низове (напр. потребителското име става a1b2c3)
По-долу е даден пример, за да разберете по-добре
Оригинален код:
function calculateTotal(цена, данък) {
цена за връщане + (цена * данък);
}
Този код може да изглежда така след обфускиране
Обфускиран код:
функция _0x45a1(x,y){return x+(x*y);}
2-стрингово и числово кодиране
Известно е още като криптиране на низове. Това е процес, чрез който чувствителни данни като URL адреси или API ключове се кодират с низове в кода. Следва пример за криптиране на низове:
Оригинален код:
const apiKey = "ABC123";
Обфускираната версия е дадена по-долу.
Обфускиран код:
const _0x3d2a = "\x41\x42\x43\x31\x32\x33";
3-Контролно изравняване на потока
Накратко известно като изравняване на кода. Сложните кодови структури са опростени, коментарите са премахнати, за да се намали максимално четливостта.
Оригинален код:
Прост код може да изглежда така
function checkAccess(user) {
if (user.role === "admin") връща true;
else return false;
}
Обфускиран код:
функция _0x1a2b(_0x3c4d) {
return _0x3c4d["\x72\x6f\x6c\x65"] === "\x61\x64\x6d\x69\x6e" ? !0x0 : !0x1;
}
Четливостта е силно намалена, както се вижда от разликата между двата кода, представени по-горе.
Вмъкване на 4-мъртъв код
Това е подобно на изравняване на кода и промяна на контролния поток. Това е добавянето на безсмислени кодови фрагменти към оригиналния код, за да го направи по-малко четлив.
function validateInput(input) {
if (input.length > 5) връща true;
else return false;
// Мъртъв код по-долу
const x = 10;
console.log("Това никога не работи");
}
Версията за вмъкване на мъртъв код (Obfuscated) на този код изглежда така:
function validateInput(input) {
if (input.length > 5) {
// Мъртъв код, който не прави нищо полезно
const unusedVar = Math.random() * 100;
console.log("Това е част от мъртвия код: ", unusedVar);
връщане true;
} else {
// Още мъртъв код по-долу
let fakeCondition = input.includes("secret");
if (fakeCondition) {
console.log("Това условие е фалшиво и без значение");
}
връщане false;
}
// Недостижим мъртъв код
const x = 10;
const y = 20;
console.log("Това никога няма да се изпълни, но обърква нападателите: ", x + y);
}
5. Техники против отстраняване на грешки
Техниката против отстраняване на грешки в JS е уникална и включва оператори за отстраняване на грешки, откриване на конзола и атаки за синхронизиране, за да попречат на кода и отстраняването на грешки.
setInterval(function(){
if (typeof console._commandLineAPI !== 'undefined') {
alert("Открит е дебъгер!");
window.location.href = "относно:празно";
}
}, 1000);
Същият код, когато е модифициран в обфускирана версия с помощта на инструмента за обфускиране на JS. Стана по-трудно да се разбере и анализира чрез използване на допълнителен слой против отстраняване на грешки.
Обфускиран код:
(функция () {
var _0x3c87 = ['_commandLineAPI', 'undefined', 'about:blank'];
(функция (_0x4d1b99, _0x1ea782) {
var _0x223b1b = функция (_0x234219) {
докато (--_0x234219) {
_0x4d1b99['push'](_0x4d1b99['shift']());
}
};
_0x223b1b(++_0x1ea782);
}(_0x3c87, 0x18f));
var _0x4a68 = функция (_0x4d1b99, _0x1ea782) {
_0x4d1b99 = _0x4d1b99 - 0x0;
var _0x223b1b = _0x3c87[_0x4d1b99];
връщане _0x223b1b;
};
setInterval(function () {
if (typeof console[_0x4a68('0x0')] !== _0x4a68('0x1')) {
alert('Открит е дебъгер!');
window['location']['href'] = _0x4a68('0x2');
}
}, 0x3e8);
})();
Това бяха само някои от простите стъпки (техники) за това как ясна и съществена част от кода може да бъде преобразувана в най-високото ниво на трудност, правейки го да изглежда като много напреднал и сложен код с помощта на инструмент за обфускиране.
Практически предложения за обфускиране в JavaScript
За най-добрата практика на обфускацията в JS има няколко предложения за прилагането й на практика.
Избор на надеждни инструменти
Работа на доверени обфускатори като JavaScript Obfuscator или UglifyJS за премахване на стабилни трансформации.
2-Замъгляване с други мерки за сигурност
Обфускацията е началният слой на защита. Съчетаването му с различни техники като строго тестване, сигурни практики за кодиране и т.н. може да добави непробиваема защита към вашия проект.
Документация с 3 кода
Запазете ясна версия на оригиналния код и чартър за бъдещо отстраняване на грешки. Той ще ви позволи достъп до оригиналния си код, като по този начин ще улесни процеса на изменение.
4-Активност
Бъдете в течение за възникващите заплахи и съответно променете тактиките си за обфускиране.
Етични съображения
Идеята за обфускиране дойде до усещане за етична защита на вашите проекти от кибератаки. По този начин злоупотребата с него може да доведе до лоши обстоятелства, като например:
1-Внедряване на зловреден софтуер
Киберпрестъпниците често използват техниката на обфускиране, за да прикрият своите опасни скриптове или криминални досиета.
2-Измамни практики
Обфускацията може също да нахлуе в личния живот, да проследява скриптове и т.н. Винаги е важно да се обмисли правилното използване на такива техники. Поддържането на баланс между тези неща е първата стъпка към извършване на замъгляване.
Ограничения на обфускацията
Въпреки че използването на обфускиране за защита на вашия код и проекти е много полезно, то не е безупречно. Има някои ограничения, които могат да ви дразнят, докато го използвате. Някои от неудовлетворените пропуски са разгледани по-долу:
1-Въздействие върху производителността:
Ако кодът ви е обфускиран повече от необходимото, това ще се отрази отрицателно на времето за изпълнение на кода ви, главно ако се използват методи за динамично генериране или излишен код.
2-Липса на абсолютна сигурност:
Експертните хакери или нападатели могат да използват обфускиране на вашия вече обфускиран код, като в крайна сметка не оставят защита на вашия код.
3-Предизвикателства за отстраняване на грешки:
Обфускираният код винаги е труден за отстраняване на грешки, поддръжка или разработване поради добавянето на ненужни редове, използвани за неговата защита. Още по-трудно е за програмисти, които не са били част от екипа за разработка на оригиналния код и обфускиран код.
4-Проблеми със съвместимостта:
Специфични техники за обфускиране не са достъпни във всички браузъри или среди, като по този начин увеличават шансовете за технически проблеми при извеждането или работата на кода.
Извод
JavaScript обфускацията е мощен и полезен инструмент за защита на кода срещу кражба, хакери, нападатели, подправяне и обратно инженерство. Въпреки че е защитен щит за вашата чувствителна информация и интелектуална собственост, запазена във вашия компютър чрез кодиране, той не е постоянно или непобедимо решение за безопасността.
Разработчикът не трябва да разчита само на замъгляване. Като разберат и получат достатъчно познания за неговите техники, предимства и ограничения, разработчиците могат да го направят по-ценен и ефективен за крайната защита на вашия код.
Въпреки че има някои предимства, ограничения и всичко, от което се нуждае един процес или техника, за да съществува, истинската му сила се крие във факта, че е част от многопластова отбранителна стратегия; Трябва да практикувате достатъчно, за да го направите по-ефективно, полезно и продуктивно за вас от всеки друг. Помага да се гарантира целостта, поверителността и надеждността на вашия JavaScript код в непрекъснато развиващия се цифров пейзаж.
Накратко, това е инструмент, който ви помага да запазите поверителността си и ви мотивира да мислите за по-ефективни начини за защита на вашата информация.
За повече инструменти за оптимизиране на вашата уеб разработка, разгледайте:
За повече инструменти за защита посетете раздела за сигурност на UrwaTools.