Как я могу зашифровать код JavaScript, чтобы он не был расшифрован? - PullRequest
9 голосов
/ 14 января 2010

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

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

- Правка -

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

Ответы [ 12 ]

24 голосов
/ 14 января 2010

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

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

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

10 голосов
/ 14 января 2010

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

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

7 голосов
/ 14 января 2010

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

6 голосов
/ 14 января 2010

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

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

В JavaScript нет такого понятия, как скомпилированный двоичный файл.Но по мере того, как все больше браузеров переходят на компиляцию байт-кода для достижения более высокой производительности, мы можем когда-нибудь иметь скомпилированный исходный формат JavaScript.Возможно, аналогично файлам .py и .pyc в Python, возможно, у нас будет файл .jsc или JavaScript Compiled, который можно доставлять в браузер в двоичном виде для запуска на его виртуальной машине JavaScript.

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

4 голосов
/ 14 января 2010

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

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

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

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

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

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

4 голосов
/ 14 января 2010

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

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

3 голосов
/ 14 января 2010

На самом деле YUI Compressor от Yahoo сжимает и запутывает ваш JavaScript для обычного использования и обеспечивает лучшее сжатие, чем JSMin .

2 голосов
/ 14 января 2010

Microsoft раньше предоставляла Script Encoder для кодирования вашего JavaScript (и ASP, VBScript и т. Д.), Но закодированный сценарий работал только в Internet Explorer, так что это было большое нет-нет ( ссылка )

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

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

1 голос
/ 14 января 2010

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

0 голосов
/ 13 июля 2015

используйте этот инструмент: Javascript Obfuscator https://javascriptobfuscator.com/Javascript-Obfuscator.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...