Подтвердить что ты не робот

Является ли использование обфускатора достаточным для защиты моего кода JavaScript?

Я работаю над созданием инструмента разработки, написанного на JavaScript.

Это не будет проект с открытым исходным кодом и будет продаваться (надеюсь) в виде коммерческого продукта.

Я ищу лучший способ защитить свои инвестиции. Использует ли obfuscator (code mangler) достаточно, чтобы разумно защитить код?

Есть ли другие альтернативы, о которых я не знаю?

(Я не уверен, что obfuscator - правильное слово, это одно из приложений, которое берет ваш код и делает его очень нечитаемым.)

4b9b3361

Ответ 1

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

Исходный код не стоит кражи.

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

Скажем, завтра кто-то бросил кучу DVD-дисков на ваш порог, содержащий исходный код для Windows Vista. Что бы вы могли с этим сделать? Конечно, вы можете скомпилировать его и отдать копии, но это всего на один шаг больше усилий, чем копирование розничной версии. Вы могли бы тщательно найти и удалить код проверки лицензии, но что-то, что-то яркое, уже сделано для двоичных файлов. Замените логотип и графику, притворитесь, что вы написали его самостоятельно и продали его как "Vicrosoft Mista"? Вас поймают.

Вы могли потратить огромное количество времени на чтение кода, пытаясь понять его и по-настоящему "украсть интеллектуальную собственность", которую Microsoft инвестировала в разработку продукта. Но вы были бы разочарованы. Вы бы нашли, что код был длинной серией мирских решений, сделанных один за другим. Некоторые из них были бы умнее, чем вы могли бы подумать. Некоторые оставили бы вас качать головой, задаваясь вопросом, какие обезьяны они нанимают там. Большинство просто заставило бы вас пожал плечами и сказать: "Да, как вы это делаете".

В этом процессе вы узнаете многое о написании операционных систем, но это не повредит Microsoft.

Замените "Vista" на "Leopard", и приведенные выше абзацы не меняют один бит. Это не Microsoft, это программное обеспечение. Половина людей на этом сайте, вероятно, может создать клон Qaru с просмотром источника этого сайта или без него. У них просто нет. Исходный код Firefox и WebKit доступны для чтения. Теперь напишите свой собственный браузер с нуля. Увидимся через несколько лет.

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

Ответ 2

Я глубоко не согласен с большинством ответов выше.

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

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

Непрофессиональный код шепчет:

  • Давай, проанализируй меня, повторишь. Может быть, вы могли бы сделать лучшее программное обеспечение, используя меня.

Обфусканный код говорит:

  • Уходи с чувака. Это дешевле использовать ваши собственные идеи, чем пытаться взломать меня.

Ответ 3

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

В прошлом я видел, как люди делали несколько вещей:

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

Существует много других методов.

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

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

Ответ 4

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

Примером такой ситуации может быть Карты Google. Источник Javascript явно запутан. Однако для действительно частной/чувствительной логики они выталкивают данные на сервер и обрабатывают эту информацию сервером с помощью XMLHttpRequests (AJAX). С этим дизайном у вас есть важные части на стороне сервера, гораздо более жестко контролируемые.

Ответ 5

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

Ответ 6

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

Просто невозможно скрыть код, написанный на Javascript, так как исходный код должен быть передан браузеру для выполнения.

Если вы хотите скрыть свой код, у вас есть следующие возможности:

1) Используйте среду, в которой скомпилированный код (а не источник) загружается клиенту, например. Flash или Silverlight. Я даже не уверен, что это надежный, но это, безусловно, намного лучше, чем Javascript.

2) Имейте конец на стороне сервера, который выполняет работу, и тонкий клиент, который просто делает запросы на сервер.

Ответ 7

Я бы сказал, да, достаточно, если вы также убедитесь, что вы сжимаете код, используя инструмент, например Dean Edward Packer или похожие. Если вы думаете о возможностях таких инструментов, как .NET Reflector с точки зрения обратного инженерного компилированного кода /IL в .NET, вы понимаете, что вы ничего не можете сделать, чтобы полностью защитить свои инвестиции.

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

Ответ 8

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

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

Если вы используете какой-либо другой язык, возможно, java или .NET, вы можете попробовать сделать что-то вроде "позвонить домой", чтобы убедиться, что номер лицензии соответствует указанному URL-адресу. Что работает, если ваше приложение является своего рода онлайн-приложением, которое будет постоянно подключаться к сети. Но, имея доступ к источнику, люди могут легко обойти эту часть.

Короче говоря, javascript - это плохой выбор за то, что вы делаете.
Шаг от того, что вы делаете, возможно, использует бэкэнд webservice для получения ваших данных. Пусть веб-служба обрабатывает процесс аутентификации/проверки. Требуется небольшая работа, чтобы убедиться, что она пуленепробиваемая, но она может работать

Ответ 9

Если это для веб-сайта, который по самой своей природе ставит просмотр своего кода одним щелчком мыши, есть ли какая-нибудь причина скрывать что-нибудь? Если кто-то хочет украсть ваш код, они, скорее всего, пойдут на то, чтобы заставить даже самый искаженный код читать человеком. Посмотрите на коммерческие сайты, они не обфускают свой код, и никто не выходит и не крадет код из приложений Google. Если вас действительно беспокоит кража кода, я бы поспорил, что написал его на другом компилированном языке. (что, конечно же, уничтожает всю вещь webapp...) Даже тогда вы не совсем в безопасности, есть много компиляторов.

Итак, нет способа сделать то, что вы хотите, перед лицом любого, у кого есть достаточная мотивация.