2013-03-02 4 views
17

На самом деле я разрабатываю расширение Chrome и плагин jQuery для его загрузки и продажи на Codecanyon. Когда я «Проверяю источник» на странице, и я нажимаю на вкладку «Ресурсы», файл javascript выглядит пустым. Как Codecanyon это делает? Я также хочу иметь защиту от кражи файлов на своем собственном веб-сайте, но я не знаю, как это сделать. Я знаю php и javascript, и нет никакого способа сделать это, потому что браузер загружает файл для его выполнения.Как предотвратить кражу кода javascript?

Вы можете увидеть пример here.

+7

Файл пуст, потому что фактический обратный отсчет JS-кода находится в 'jquery.js'. Вы не можете скрыть это, пока клиентская сторона. – Arthur

+2

http://en.wikipedia.org/wiki/Obfuscation_(software) - http://www.dmoz.org/Computers/Programming/Languages/JavaScript/Tools/Obfuscators/ – mplungjan

ответ

10

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

Фактический код в вашем примере загружается с помощью файла jquery.js.

14

Если вы видите, что оно пустое, значит, оно пустое. Невозможно скрыть свой код javascript от клиента, который должен выполнить код.

36

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

Вам необходимо понять, что это сценарий, выполняемый на стороне клиента. Он не компилируется (это означает, что он не является двоичным (0 и 1 машинный язык)). Так что это свободно читаемый.

Тем не менее вы можете запутать его, используя такие инструменты, как YUI compressor

В основном этот вид инструментов удалить лишние пробелы, возвращает вкладки строки и переименовывать методы (например, метод «а» стоять на «MyShinyMethodWhoMakesNiceStuff») и переменных. Это очень затрудняет чтение и понимание кода. Таким образом, сложнее добиться обратной инженерии.

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

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

Я думаю, что в конце концов, это всего лишь вопрос времени.

+1

Но с каждым из этих инструментов код можно отменить (даже если он трудно читается). – Arthur

+0

@ Артур: конечно. Единственный способ - препятствовать людям пытаться разоблачить его. Я уточню это в своем посте. – moxy

+0

Было бы здорово, если бы у них было одно из приложений-приложений, которые бы СЛУЧАЙНО генерировали имена/переменные. –

2

На "защиты" JavaScript - в основном то, что все остальные сказали.

Объясняя example you provided:

Действительно, http://demos.pixelworkshop.fr/circular_countdown_cc/js/countdown.min.js выглядит пустыми, однако фактический код плагиной добавляется в JQuery.JS файл, начиная со строки 58:

http://demos.pixelworkshop.fr/circular_countdown_cc/js/jquery.js

-7

Liblock небольшой инструмент, построенный себе. Он шифрует ваши JS-источники - это не простая безвестность путем обфускации, но хорошая безопасность с помощью шифрования.

Когда вы проверяете DOM на своем клиенте, вы увидите следующее: nplreq (url) для каждого скрипта, который вы связываете с HTML-заголовком.

Посмотрите, как это работает здесь liblock-demo - это демонстрация только для скрытия скриптов в «nopro_lib» и «xscroll.js».

Шифрование и дешифрование полностью прозрачны для браузера. Он протестирован с Firefox, Chrome, Opera, Konqueror, IE8-10 на ПК, а также с Dolphin и Safari на планшете Android.

Источники надежно скрыты, и только с действительно большими усилиями они могут быть снова открыты. Шифрование выполняется с помощью AES (Rijndael 256) с использованием одноразовых ключей, которые согласовываются между клиентом и (liblock-) сервером с использованием Diffie-Hellman.

+8

«Хорошая безопасность с помощью шифрования» - это BS. Если браузер может расшифровать его, все остальные могут это сделать. Так что это на самом деле * хуже *, чем обфускация. – ThiefMaster

+2

@ThiefMaster Похоже, написание '$ ('script')' в консоли достаточно, чтобы нарушить безопасность здесь. –

Смежные вопросы