Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Постоянно задаюсь этим вопросом - как скрыть js код без обфускации (т.к. ненадежно), может быть есть какие-то способы?

ПрограммированиеПрограммыIt технологии
  · 6,5 K
старший разработчик в pseven.io  · 24 окт 2021
Надёжно – никак. Если код выполняется на стороне клиента, то он должен до этого клиента дойти. Если код дошёл до клиента, то он может быть расшифрован и проанализирован. Единственный подход, позволяющий надёжно скрыть код в вебе – это выполнять его на сервере, а клиенту присылать результаты его работы.
Но как быть, если у вас клиентское приложение? Ответ на этот вопрос зависит от цели, для которой вам нужно скрывать код. Если этот код содержит какую-то логику, обеспечивающую безопасность, то нужно как можно быстрее пересмотреть архитектуру и задачи аутентификации-авторизации-валидации перенести на сервер. Клиентский код не может и не должен проверять права и подписи, это открытая уязвимость.
Если же вы опасаетесь, что конкурент возьмёт ваш код и удешевит таким образом свою разработку, то надёжно скрывать код для этого не нужно. Нужно, чтобы стоимость анализа такого кода была выше, чем написание аналогичного кода заново. Как правило, для решения этой задачи хватает стандартной минификации и обфускации.
Стоит добавить, что исполняемый JS может быть написан на другом языке, и после скомпилирован в JS. Обратный перевод в исходники при таком процессе невозможен. Впрочем, обфускация работает по схожему принципу. Ещё один вариант – это выполнять критичный код на web assembly, например переведя его на AssemblyScript. Тогда он компилируется в байткод, анализ которого будет в разы сложнее. Но это всё полумеры, при должных вложениях времени и сил алгоритм может быть проанализирован и модифицирован. Любой локальный код можно взломать.
Поэтому правильный ответ такой – решайте проблемы по мере поступления. Помимо обычной минификации нет смысла как-то специально запутывать любой свой код "на всякий случай", никто так не делает за ненадобностью. Если же вы столкнулись с конкретным случаем, где это необходимо, нужно понять, какие именно факторы делают этот случай особенным, и решать данную конкретную задачу.
Что-то осталось непонятно? Спроси в нашей группе в Телеграме!Перейти на t.me/jstsmentor
1 эксперт согласен
Нечего добавить, именно так и обстоят дела с яваскриптом на фронтэнде.
Да, я зарабатываю на ✺Толоке 👇  · 25 апр 2023  · toloka.yandex.ru/promo
Существует несколько способов скрыть JavaScript-код без обфускации. Некоторые из них могут помочь в защите вашего кода, но не являются абсолютно надежными. - Использование модулей поможет разделить ваш код на отдельные файлы, каждый из которых будет иметь свою область видимости. Это усложнит задачу злоумышленника при попытке получить доступ к вашему коду. - Если вы... Читать далее
Заработать пару сотен рублей онлайн на Яндекс✺Толока! Регистрируйся.Перейти на toloka.yandex.ru/promo
программист, тренер  · 23 окт 2021
Боюсь, что нет. Вы пересылаете код на сторону клиента. Это автоматически обрезает любые варианты, кроме обфускации.
Другое дело, что трезво оцените "воропригодность" своего кода. Если вы не делаете какое-либо реально уникальное ноу-хау, возможно, что ваш код не на столько необходимо даже обфусцировать.
Первый
Программист  · 23 окт 2021
Если собираешь проект в продакшн через сборщики (webpack, parcel и т.д.), то код минифицируется в такую кашу... что потом только реально "офигевший" это сможет разобрать когда полезет в твой код через dev-tools в браузере.
Умелому человеку или команде проще будет, основываясь на внешнем поведении твоего приложения, сделать своё и написать код по-своему с тем же функционалом.