Как я могу запутать (защитить) JavaScript? [закрыто]

693
задан Chuck Le Butt 16 May 2016 в 12:57
поделиться

13 ответов

Путаница:

Попытка Компрессор YUI . Это - очень популярный инструмент, созданный, улучшенный и сохраняемый командой UI Yahoo.

можно также использовать:

Частные Строковые Данные:

строка Хранения оценивает частный, различное беспокойство, и путаница не будет действительно иметь большой выгоды. Конечно, путем упаковки источника в искаженную, уменьшенную путаницу, у Вас есть облегченная версия [1 117] безопасность до [1 118] мрак . Большую часть времени именно Ваш пользователь просматривает источник, и строковые значения на клиенте предназначаются для их использования, так, чтобы вид частного строкового значения был не часто необходим.

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

Заметка на полях:

Путаница в JavaScript, как было известно, вызвала некоторые ошибки. obfuscators становятся немного лучше об этом, но много комплектов оборудования решают, что они видят достаточно преимущества от [1 121] уменьшение и gzipping, и добавленные сбережения путаницы не всегда стоят проблемы . При попытке защитить свой источник, возможно, Вы решите, что это стоит Вашего в то время как, только для создания кода тяжелее для чтения. JSMin является хорошей альтернативой.

401
ответ дан Mike 16 May 2016 в 12:57
поделиться

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

путаница JS обычно делается, чтобы уменьшить размер сценария, вместо того, чтобы "защитить" его. Если Вы находитесь в ситуации, где Вы не хотите, чтобы Ваш код был общедоступен, JavaScript не является правильным языком..

существует много инструментов вокруг, но большинство имеет слово "компрессор" (или "minifier") на его имя по причине..

13
ответ дан dbr 16 May 2016 в 12:57
поделиться

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

Так, если Вы не хотите жертвовать производительностью, можно только действовать на имена переменной и имена функций, например, замену их с a, b... aa, ab... или a101, a102, и т.д. И, конечно, удалить столько пространства/новых строк, сколько Вы можете (это быть тем, что так называемые компрессоры JS делают).
строкам Запутывания поразят производительность, если необходимо зашифровать их и дешифровать их в режиме реального времени. Плюс отладчик JS может показать окончательные значения...

17
ответ дан PhiLho 16 May 2016 в 12:57
поделиться

Существует много инструментов путаницы JavaScript, которые в свободном доступе; однако, я думаю, что важно отметить, что трудно запутать JavaScript к точке, где это не может быть перепроектировано.

С этой целью, существует несколько опций, которые я привык для некоторого сверхурочного времени градуса:

  • Компрессор YUI . Компрессор JavaScript Yahoo! делает хорошее задание сжатия кода, который улучшит его время загрузки. Существует небольшой уровень путаницы, которая работает относительно хорошо. По существу Компрессор изменит имена функций, удалит пробел и изменит локальные переменные. Это - то, что я чаще всего использую. Это - основанный на Java инструмент с открытым исходным кодом.

  • JSMin является инструментом, записанным Douglas Crockford, который стремится уменьшить Ваш источник JavaScript. В собственных словах Crockford, "JSMin не запутывает, но он действительно уродует". Это - основная цель, должен уменьшить размер Вашего источника для более быстрой загрузки в браузерах.

  • Свободный JavaScript Obfuscator. Это - веб-инструмент, который пытается запутать Ваш код путем фактического кодирования его. Я думаю, что компромиссы его формы кодирования (или путаница) могли прибыть за счет размера файла; однако, это - вопрос персонального предпочтения.

45
ответ дан Tom 16 May 2016 в 12:57
поделиться

Я могу рекомендовать Утилита JavaScript Patrick J. O'Neil. Это может запутать/уплотнить и сжаться, и это, кажется, довольно хорошо в них. Однако я никогда не пытался интегрировать его в сценарии сборки любого вида.

Что касается запутывания по сравнению с уменьшением - я не большой поклонник первого. Это делает отладку невозможной (Ошибка в строке 1... "ожидают, существует только одна строка"), и они всегда занимают время для распаковки. Но если Вы должны... хорошо.

11
ответ дан ʍǝɥʇɐɯ 16 May 2016 в 12:57
поделиться

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

Говорят с адвокатом о законе об интеллектуальной собственности и каковы Ваши легальные опции. "Открытый исходный код" не подразумевает, что "люди могут считать источник". Вместо этого Открытый исходный код является конкретным разрешения предоставления модели лицензирования, чтобы свободно использовать и изменить Ваш код. Если Вы не выдаете такую лицензию тогда, люди, копирующие Ваш код, находятся в нарушении, и (в большей части мира) у Вас есть легальные опции остановить их.

единственный способ, которым можно действительно защитить код, не состоит в том, чтобы поставить его. Переместите важную серверную сторону кода и имейте Ваш общедоступный код JavaScript, делают вызовы Ajax к нему.

См. мой полный ответ о obfuscators здесь.

113
ответ дан Community 16 May 2016 в 12:57
поделиться

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

Кто-то упомянул base64 для защиты строк. Это - ужасная идея. Base64 является сразу распознаваемым типами людей, которые хотели бы перепроектировать Ваш код. Первая вещь, которую они сделают, не кодируют его и видят, каково это.

49
ответ дан El Ronnoco 16 May 2016 в 12:57
поделиться

Этот уменьшает , но не запутывает. Если Вы не хотите использовать Java командной строки, можно вставить JavaScript в веб-форму.

3
ответ дан Chris S 16 May 2016 в 12:57
поделиться
  • 1
    pa является указателем на структуру, которая содержит счетчики и средство удаления. Когда сильное количество добирается для обнуления Вас, должны удалить объект, но счетчики должны остаться, пока также всех недель не не стало: обнуленный сильный счетчик - то, что делает недели, чтобы знать, что они указывают на уничтоженный объект, и слабый счетчик является количеством слабых, которые все еще должны знать это. – Emilio Garavaglia 14 June 2014 в 09:45

У меня создается впечатление что некоторые предприятия (например: JackBe) вставленный зашифрованный код JavaScript *.gif файлы, а не файлы JS, как дополнительная мера путаницы.

3
ответ дан xgMz 16 May 2016 в 12:57
поделиться
  • 1
    Едва ли ловушка, если Вы используете weak_ptr соответственно хотя... Больше из чего-то необходимо знать. – Matt 19 May 2014 в 20:42

Я удивлен, что никто не упомянул Google Closure Compiler . Он не просто минимизирует / сжимает, он анализирует, чтобы найти и удалить неиспользуемый код, и перезаписывает для максимального минимизации. Он также может выполнять проверку типов и предупреждать о синтаксических ошибках.

JQuery недавно перешел с YUI Compresser на Closure Compiler и увидел « существенное улучшение »

136
ответ дан 22 November 2019 в 21:35
поделиться

В качестве обфускатора / компрессора JavaScript / HTML / CSS вы также можете попробовать Patu Digua .

3
ответ дан 22 November 2019 в 21:35
поделиться

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

18
ответ дан 22 November 2019 в 21:35
поделиться

В отличие от большинства других ответов, которые я предлагаю против YUI Compressor; вы должны использовать Google Closure .

Не сильно, потому что он сжимает больше, но в основном потому, что он перехватывает ошибки javascript, такие как a = [1,2,3,]; , которые заставляют IE сходить с ума.

17
ответ дан 22 November 2019 в 21:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: