Как я могу зашифровать код JavaScript так, чтобы это не было decryptable?

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

Какие инструменты я могу использовать, чтобы сделать это?

- Редактирование-

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

10
задан James Skidmore 13 January 2010 в 23:10
поделиться

11 ответов

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

«Лучшее», которое вы можете сделать, это, вероятно, чтобы миниатюрировать его, что затрудняет его понять - и немного запутывание может сделать тоже - даже если кто-то действительно мотивирован будет в состоянии прочитать это.

См. Например, компрессор YUI , который может использовать и обфиживать код JS.

24
ответ дан 3 December 2019 в 13:15
поделиться

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

Если то, что вы действительно спрашиваете, - это то, как запутать код, чтобы никто не мог отменить инженера, ответ: Вы не можете , не в JavaScript или любой другой язык Отказ Лучше всего вы можете сделать, это сделать его более сложным на реверсионерах, сделав его трудно прочитать; Для этого есть любое количество инструментов:

10
ответ дан 3 December 2019 в 13:15
поделиться

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

7
ответ дан 3 December 2019 в 13:15
поделиться

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

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

4
ответ дан 3 December 2019 в 13:15
поделиться

Несмотря на то, что он не зашифрован, Yahoo's's Yui компрессор Будет сжимать и запустить ваш JavaScript для нормального использования и обеспечивает лучшее сжатие, что jsmin .

3
ответ дан 3 December 2019 в 13:15
поделиться

сгенерированный код будет идентичным (массив и ptr). Кроме того, что массив один не компилирует, что

и BTW - сделать это c++ и использовать вектор

-121--1839509-

Это невозможно сделать. Вы можете скрыть его и иметь в нем какой-то код проверки домена. Или его можно обслужить с помощью сценария на стороне сервера, который проверяет соответствующий домен.

-121--3027859-

Я не думаю, что вам нужно шифрование, если вы не собираетесь писать расширение браузера, которое может расшифровать javascript.

Я имею GWT, или даже jsmin может в достаточной степени сжать/запутать ваш javascript для нормального использования.

Если вы хотите связать какой-либо код клиентской стороны с вашим сайтом, вы можете рассмотреть какой-то вид случайного рукопожатия, которое зависит от серверного метода для «проверки» javascript. Я даже не знаю, возможно ли это.

0
ответ дан 3 December 2019 в 13:15
поделиться

Это именно DRM: вы даете пользователю блокировку, а также ключ к нему и ожидаю, что смогут сказать, что они могут сделать с этим.

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

Практически невозможно, тоже: посмотрите на всех смотрите DVD на ящиках Linux, чтобы увидеть, насколько вы успешны.

0
ответ дан 3 December 2019 в 13:15
поделиться

То, что вы ищете, это обфускация , а не шифрование. Есть такие инструменты, как JSMin и YUI Compressor, которые сделают ваш код очень нечитаемым, до такой степени, что никто не захочет пытаться разобраться в нем. Однако, нет способа сделать так, чтобы кто-то не смог скопировать и вставить его на свой собственный сайт и запустить его там. Я бы не беспокоился об этом, честно говоря, потому что вы зря тратите время, пытаясь защитить то, что не может быть защищено. Попробуйте поместить всю свою "важную" логику на стороне сервера, если это возможно, потому что это единственный надежный способ сделать это. Если браузер может получить к ней доступ, то и любой другой может.

1
ответ дан 3 December 2019 в 13:15
поделиться

Microsoft использовала Script Encoder для кодирования JavaScript (а также ASP и VBScript и т.д.), но закодированный скрипт работал только в Internet Explorer, поэтому он был большим no no (link)

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

Лучшим минимизатором/обфускатором, вероятно, является Google Closure Compiler - он очень продвинутый и может превратить ваш код во что-то очень непонятное.

2
ответ дан 3 December 2019 в 13:15
поделиться

Я должен заявить, что, хотя нет нового релиза каждые 2 месяца, как Роб заявил, что вы можете иногда испытывать это чувство. Хотя есть еще действие на гугл-группу и гитуб. Если что-то до Рождества было больше свежих лиц, начинающих вносить вклады, чем раньше (даже простые, такие как doco), это показывает мне, что может быть больше интереса, чем когда-либо, его просто то, что люди получают с этим.

Моя работа использует Subsonic (как 2.2, так и 3.0.0.3) в большинстве проектов, где мы контролируем его. У нас есть около 28 .net devs, и они все любят это (мы не попадаемся в то, что он не может сделать, как его не ORM/доступ к данным говорят per se.

Поскольку мы используем только Donsonic для низкоуровневого инструмента запроса, а не в качестве уровня доступа к данным, я полагаю, что мы не слишком тесно связаны с ним, если нам нужно заложить его, но у нас еще есть причина.

Моя точка зрения такова: Его действительно действительно легко использовать, легко подобрать, легко модифицировать, легкий инструмент запроса/ORM (в меньшей степени). Есть немного инструментов, которые имеют все эти свойства и, тем не менее, не запирают вас в миллион школ мысли о вещах. Из-за этого я не вижу, что он умирает в ближайшее время - это слишком привыкание инструмент, чтобы иметь на ремне летучей мыши.

Я активный фанатский буй звукозаписи и SubSonic Rocksorz My Sockorz!

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

-121--3085452-

Пытались ли вы настроить команду - Q в качестве ускорителя в меню? Можете ли вы заставить ваше приложение ответить на него?

Я не положительный, но я думаю, что это работает в Linux и, вероятно, Windows с эквивалентным Alt - F4 . Мое приложение отвечает на «убойный» нажатие клавиши, я обрабатываю некоторый код очистки, а затем делаю программный System.exit () .

Если вы «просто» после изящной обработки выхода, вы можете также захотеть поймать WindowEvent WINDOW _ CLOSING , где традиционно «вы уверены?» все делается.

-121--1576009-

То, что вы хотите, теоретически и практически невозможно. Люди скажут вам, что это невозможно, и вы можете подумать: «Ну, это потому, что никто не старался достаточно.» Нет. Невозможно в том же пути, что вычисление n-го простого числа за линейное или постоянное время невозможно. Невозможно в том же пути, что остановить проблему невозможно решить. "Что значит 2 + 2 не равно пяти? Вы недостаточно стараетесь! "

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

Однако на более высоком уровне ваша проблема вряд ли будет конкурентами или пиратами, ворующими ваш код. Ваша проблема будет ориентирована на бизнес: Собирайте аудиторию, делая качественный продукт, и хорошую цену, и с достаточным маркетингом. Ты делаешь это правильно, кто-то крадёт твой код не имеет значения. Вы делаете это правильно, и наличие «аутентичного оригинала», по-видимому, будет иметь реальную ценность. На самом деле, если вы выпускаете свои материалы с открытым исходным кодом, это может помочь только вам, потому что тогда у вас есть армия заинтересованных любителей, работающих на вас бесплатно, потенциально. Пиратство и реверс-инжиниринг на самом деле является благой мечтой, потому что это означает, что люди достаточно заинтересованы в вашем продукте, чтобы захотеть улучшить его. Лучше всего сделать все возможное, чтобы это произошло.

Если ваш бизнес действительно зависит от сохранения секрета javascript, то вы в основном ошиблись в бизнес-плане на этапе 1.

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

Если это не бизнес-усилия, то я действительно понятия не имею, почему ты вообще беспокоишься. Правильный кредит?

4
ответ дан 3 December 2019 в 13:15
поделиться

Я думаю, что вы запутаете шифрование с скомпилированным двоичным двоином .

Не даже коммерческое программное обеспечение для закрытого источника, такое как Microsoft Office или Adobe Photoshop зашифровано для распространения. Но они скомпилированы на родной машинный код, который делает их трудно обратным инженером.

JavaScript не имеет такой вещи, как сборник бинара. Но, поскольку все больше и больше браузеров перемещаются к сборке BYTECODE для достижения более быстрой производительности, мы можем когда-нибудь иметь скомпилированный формат источника JavaScript. Возможно, аналогично Python's .py и . Pycc файлы, может быть, у нас будет .jsc или JavaScript Compited файл, который может быть доставлен в браузер В двоичной форме, чтобы запустить на своем виртуальной машине JavaScript.

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

7
ответ дан 3 December 2019 в 13:15
поделиться
Другие вопросы по тегам:

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