Table of Contents

JavaScript — это современный язык программирования, который создает обширный и динамичный контент для веб-сайта. Интересно, что он работает по принципу однопоточности. Это означает, что вы можете выполнять только одну операцию за раз. Объекты могут быть созданы напрямую, а переменные не имеют фиксированных статических типов.

JavaScript прост для многих веб-разработчиков, а код его приложения доступен пользователям и любому человеку. Это самая сложная часть использования JavaScript для разработчиков веб-сайтов. Таким образом, многие злоумышленники могут легко получить доступ к коду веб-сайта и уязвимостям данных, которые могут нанести вред веб-сайту и бизнесу, и использовать их.

Чтобы преодолеть или сохранить код, сгенерированный JavaScript, разработчики используют технику, называемую JavaScript Obfuscation. В этой статье вы узнаете о JavaScript Obfuscator, о том, как вы можете защитить и сохранить JS-код, а также о важности JS-обфускатора.

Процесс обеспечения безопасности кода, при котором разработчики изменяют или модифицируют основной код в проблемную форму, которая не может быть легко понятна человеку, обеспечивая при этом правильное выполнение кода. В отличие от шифрования (для которого требуется ключ для расшифровки измененного кода), обфускация не требует ключа для реструктуризации основного кода. 

Основная цель этого процесса — предотвратить или остановить несанкционированный доступ, реверс-инжиниринг и кражу интеллектуальной собственности.

Обфускация может служить различным целям и преимуществам, благодаря которым она используется, некоторые из которых приведены ниже:

Обфускация защищает ваш код и конфиденциальную информацию от киберпреступников и злоумышленников, тем самым обеспечивая конфиденциальность вашего проекта.

Обфусцированные коды могут затруднить хакерам их отладку, чтобы они могли быть использованы в злонамеренных целях.

Запутывание обеспечит конкурентное преимущество, защищая уникальные реализации тактики и стратегии.

Некоторый код содержит конфиденциальную информацию, ключи или логику, которые важны для работы, но не должны быть раскрыты общественности, предотвращая утечку вашей информации и помогая информации быть только для вас.

Ниже приведен пример JavaScript Obfuscator:

Основной код слова Hello в JS выглядит так:

function greet(name) {

    возвращаем "Здравствуйте, " + имя + "!";

}

Операция обфускации преобразует следующий код в следующий:

function _0x2c56(_0x1a73){return 'Hello, '+_0x1a73+'!';}

Оба кода имеют одно и то же значение, и их вывод не приводит к никакой разнице, но разница при опечатке приводит к значительной защите кода. К сложным вещам всегда сложнее получить доступ.

Работа JS обфускации показана ниже

Весь процесс состоит из нескольких шагов, таких как 

Здесь замена описательных имен переменных осуществляется на бессмысленные строки (например, имя пользователя становится a1b2c3)

Ниже приведен пример, чтобы лучше понять

Исходный код:

function calculateTotal(цена, налог) {

    цена возврата + (цена * налог);

}

Этот код может выглядеть так после обфускации

Обфусцированный код:

function _0x45a1(x,y){return x+(x*y);}

Это также известно как строковое шифрование. Это процесс, с помощью которого конфиденциальные данные, такие как URL-адреса или ключи API, кодируются строками в коде. Ниже приведен пример шифрования строк:

Исходный код:

const apiKey = "ABC123";

Запутанная версия приведена ниже.

Обфусцированный код:

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

 В краткой форме известно как сглаживание кода. Сложные структуры кода упрощены, комментарии удалены, чтобы максимально снизить читабельность.

Исходный код:

Простой код может выглядеть следующим образом

function checkAccess(user) {

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

    else return false;

}

Обфусцированный код:

function _0x1a2b(_0x3c4d) {

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

}

 Удобочитаемость значительно снижена, о чем свидетельствует разница между двумя кодами, представленными выше.

Это похоже на сглаживание кода и изменение потока управления. Это добавление бессмысленных фрагментов кода к исходному коду, чтобы сделать его менее читабельным.

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);

        return true;

    } else {

        Больше мертвого кода ниже

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

        if (fakeCondition) {

            console.log(«Это условие фальшивое и неактуальное»);

        }

        return false;

    }

    Недостижимый мертвый код

    const x = 10;

    const y = 20;

    console.log("Это никогда не выполнится, но сбивает с толку атакующих: ", x + y);

}

Метод антиотладки в JS уникален и включает в себя операторы отладчика, обнаружение консоли и атаки по времени, чтобы затруднить выполнение кода и отладку.

setInterval(function(){

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

        alert("Обнаружен отладчик!");

        window.location.href = "около:пустой";

    }

}, 1000);

Тот же код, при модификации в обфусцированную версию с помощью инструмента обфускации JS. Его стало сложнее понять и проанализировать за счет использования дополнительного уровня антиотладки.

Обфусцированный код:

(функция () {

    var _0x3c87 = ['_commandLineAPI', 'undefined', 'about:blank'];

    (функция (_0x4d1b99, _0x1ea782) {

        var _0x223b1b = function (_0x234219) {

            while (--_0x234219) {

                _0x4d1b99['push'](_0x4d1b99['shift']());

            }

        };

        _0x223b1b(++_0x1ea782);

    }(_0x3c87, 0x18f));

    var _0x4a68 = function (_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);

})();

Это были лишь некоторые из простых шагов (методов) того, как простой и важный фрагмент кода может быть преобразован в самый высокий уровень сложности, делая его похожим на очень продвинутый и сложный код с помощью инструмента обфускации.

Для лучшей практики обфускации в JS есть несколько предложений по ее применению на практике.

Работа доверенных обфускаторов, таких как JavaScript Obfuscator или UglifyJS, для удаления устойчивых преобразований.  

Обфускация — это начальный уровень защиты. Сочетание его с различными методами, такими как тщательное тестирование, безопасные методы кодирования и т. д., может добавить нерушимую защиту вашему проекту.

Сохраните чистую версию исходного кода и фрахтование для дальнейшей отладки. Это позволит вам получить доступ к исходному коду, что облегчит процесс внесения изменений.

Будьте в курсе новых угроз и соответствующим образом изменяйте тактику запутывания.

Идея обфускации возникла с чувством этической защиты ваших проектов от кибератак. Таким образом, его неправильное использование может привести к плохим обстоятельствам, таким как:

Киберпреступники часто используют технику обфускации, чтобы скрыть свои опасные сценарии или судимости.

Обфускация также может вторгаться в частную жизнь, отслеживать скрипты и т. д. Всегда важно учитывать правильное использование таких методов. Поддержание баланса между такими вещами — первый шаг к выполнению обфускации.

Хотя использование обфускации для защиты вашего кода и проектов очень полезно, оно не является надежным. У него есть некоторые ограничения, которые могут раздражать вас во время его использования. Некоторые из его невосполнимых пробелов обсуждаются ниже:

Если ваш код обфусцирован больше, чем это необходимо, это негативно скажется на времени выполнения вашего кода, особенно если используется динамическая генерация или избыточные методы кода.

Опытные хакеры или злоумышленники могут использовать обфускацию вашего уже обфусцированного кода, в конечном итоге не оставив защиты вашего кода.

Обфусцированный код всегда сложен в отладке, обслуживании или разработке из-за добавления ненужных строк, используемых для его защиты. Еще сложнее приходится программистам, которые не входили в команду разработчиков оригинального кода и обфусцированного кода.

Определенные методы обфускации доступны не во всех браузерах или средах, что увеличивает вероятность возникновения технических проблем при выводе или работе кода.

Обфускация JavaScript — это мощный и полезный инструмент для защиты кода от кражи, хакеров, злоумышленников, взлома и обратного проектирования. Несмотря на то, что это защитный щит для конфиденциальной информации и интеллектуальной собственности, сохраненной на компьютере с помощью кодирования, он не является постоянным или непобедимым решением для обеспечения безопасности.

 Разработчик не должен полагаться только на обфускацию. Понимая и получая достаточные знания о его методах, преимуществах и ограничениях, разработчики могут сделать его более ценным и эффективным для максимальной защиты вашего кода.

Несмотря на то, что у него есть некоторые преимущества, ограничения и все, что необходимо для существования процесса или техники, его истинная сила заключается в том, что он является частью многоуровневой стратегии защиты; Вам нужно практиковаться достаточно, чтобы сделать его более эффективным, полезным и продуктивным для вас, чем для кого-либо еще. Это помогает обеспечить целостность, конфиденциальность и надежность вашего кода JavaScript в постоянно меняющемся цифровом ландшафте. 

Короче говоря, это инструмент, который поможет вам сохранить вашу конфиденциальность и мотивирует вас думать о более эффективных способах защиты вашей информации.

Чтобы узнать больше об инструментах для оптимизации веб-разработки, ознакомьтесь с:

Чтобы узнать больше об инструментах безопасности, посетите раздел безопасности UrwaTools.

UrwaTools Editorial

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

Информационный бюллетень

Будьте в курсе последних новинок и используйте наши инструменты.