Библиотека Javascript: запутывать или не запутывать - который является [закрытым] вопросом

Я должен записать связанную с GUI библиотеку JavaScript. Это даст моему веб-сайту что-то вроде края (с точки зрения функциональности, которую я могу предложить) - вплоть до моей игры конкурентов с ним достаточно долго, чтобы выяснить, как записать это собой (или наконец взломать загруженный сценарий). Я могу принять то, что это будет эмулироваться со временем - это - паритет для курса (его часть бизнеса). Я просто хочу иметь передышку нескольких месяцев, куда люди идут, "Ничего себе - как f *** они делали это?" - который дает мне несколько месяцев бесплатной рекламы и некоторый импульс, чтобы перейти на другие вещи.

Чтобы быть ясным, я даже не обеспокоен хакерами ядра, которые все еще взломают источник - это - проигрывающее сражение, с которым не стоит бороться (и в любом случае я признаю, что мой код не "так драгоценен"). Однако то, что я не могу перенести, является идеей эффективно, просто передавая всю тяжелую работу, которая вошла бы в библиотеку моим конкурентам, при помощи плоскости JavaScript, который любой может загрузить и использовать. Если кто-то собирается использовать то, что я продолжил работать, то я безусловно не хочу просто передавать его им - я хочу, чтобы они упорно работали при декодировании его. Если они могут декодировать его, они имеют право иметь код (они, скорее всего, узнают, что, возможно, написали лучший код сами - у них просто не было делового чутья поместить весь [простая ваниль] компоненты в том особом порядке) - Так, я не утверждаю, что никто, возможно, не записал это (который будет нелепым требованием в любом случае) - а скорее, что я говорю, то, что никто (до сих пор) не сделал функциональность, я говорю о, доступный этой конкретной промышленности - и я (думающий как предприниматель, а не фанат/кодер), хочу доить ее для всей ее ценности, в то время как это длится т.е. пока это (неизбежно) не взламывается.

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

Что я стремлюсь узнать, за и против запутывания библиотеки JavaScript, так, чтобы я мог прийти к окончательному решению.

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

Я хотел бы знать:

  1. Как я могу управлять теми рисками (способность отладить дефектный код, гарантирующий/минимизирующий против ошибок путаницы)

  2. Есть ли любой промышленный стандарт хорошего качества obfuscators, можно рекомендовать (предпочтительно что-то, что Вы используете сами).

  3. Каковы Ваши события использования запутываемого кода в продуктивной среде?

22
задан morpheous 19 May 2010 в 03:57
поделиться

9 ответов

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

На самом деле, вы пытаетесь решить бизнес-проблему с помощью технических средств.

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

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

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

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

33
ответ дан 29 November 2019 в 03:59
поделиться

Google Closure Complier запутывает ваш код после того, как вы закончите его писать. То есть напишите свой код, прогоните его через компилятор и опубликуйте оптимизированные (и запутанные) js.

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

1
ответ дан 29 November 2019 в 03:59
поделиться

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

0
ответ дан 29 November 2019 в 03:59
поделиться

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

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

Причина, по которой Google и подобные компании не страдают от целого ряда конкурентов по вырезанию и вставке, заключается в том, что JavaScript является лишь частью пакета. Чтобы иметь хоть какую-то степень контроля над тем, как и где эти вещи используются, большой компонент должен быть основан на сервере. Хорошая новость в том, что вы можете использовать такие вещи, как Node.js, чтобы упростить разделение клиентского и серверного кода без необходимости повторной реализации частей на совершенно другом языке.

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

Вы можете увидеть элементы этого в том, как Google переходит к мета-библиотеке, которая просто служит загрузчиком для других их библиотек. Это шаг к объединению вызовов нагрузки для Google Apps, Google AdSense, Google Maps, Google Adwords и так далее.

Если вы хотите быть немного умным, вы можете быть похожими на Карты Google и добавить яд в свои библиотеки JavaScript, поскольку они обслуживаются динамически, чтобы они работали только в определенном субдомене. Это требует создания их по мере необходимости, и, хотя его всегда можно удалить с достаточным опытом, это предотвращает массовое копирование и вставку ваших файлов JavaScript. Вставить умный вызов, который проверяет document.href, несложно, и найти все эти экземпляры в агрессивно свернутом файле было бы особенно раздражающим и, вероятно, не стоит затраченных усилий.

15
ответ дан 29 November 2019 в 03:59
поделиться

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

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

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

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

Каков ваш опыт использования запутанный код в производстве environment?

  1. Полностью игнорируются атаками по побочным каналам, атаками повторного воспроизведения и т. д.
  2. Ошибки.
3
ответ дан 29 November 2019 в 03:59
поделиться

Напишите свой веб-сайт во флэш-памяти, а еще лучше - в Silverlight. Это даст вашей компании непревзойденный графический интерфейс, от которого ваши конкуренты будут лить слюнки. Но скомпилированный характер flash / dotnet не позволит им легко проникнуть в ваш код. Для вас это беспроигрышная ситуация;)

-1
ответ дан 29 November 2019 в 03:59
поделиться

Хотя обфускация в целом - это плохо, ИМХО, с Javascript ситуация немного другая. Идея состоит не в том, чтобы запутать сам Javascript, а в том, чтобы получить более короткую длину кода (полоса пропускания стоит дорого, и новички могут просто разозлиться, ожидая, пока ваш Javascript загрузится в первый раз). Первоначально называемая минификацией (с такими программами, как minify), она претерпела значительные изменения, и теперь доступен полный компилятор, такой как компилятор YUI и Google Closure Compiler. Такой компилятор выполняет статическую проверку (что хорошо, но только если вы следуете правилам компилятора), минификацию (например, замените это длинное имя переменной на «ab») и многие другие методы оптимизации. В конце концов, у вас есть лучшее из обоих миров: кодирование в нескомпилированном коде и развертывание скомпилированного (минифицированного и запутанного) кода.К сожалению, вам, конечно же, придется протестировать его более тщательно.

0
ответ дан 29 November 2019 в 03:59
поделиться

Вы можете принять бизнес-модель с открытым исходным кодом и лицензировать свои скрипты по лицензии GPL или Creative Commons BY-NC-ND или аналогичной

.
0
ответ дан 29 November 2019 в 03:59
поделиться

Факты обфускации JavaScript:

  • Никто не может предложить 100% обфускацию JavaScript без взлома. Это означает, что со временем и знаниями любую обфускацию можно «отменить».
  • Сократите! = Обфускация: Когда вы минимизируете, ваша цель: уменьшить размер кода. Минифицированный код выглядит совершенно по-другому и его гораздо сложнее читать (подсказка: jsbeautifier.com). Обфукация преследует совершенно другую цель: защитить код. Используемые преобразования пытаются защитить запутанный код от отладки и подслушивания. Обфускация может даже создать еще более крупную версию исходного кода, что полностью противоречит целям минификации.
  • Обфускация! = Шифрование - это очевидная ошибка, которую часто делают люди.
  • Обфускация должна значительно усложнить отладку, это одна из ее целей. Таким образом, если все сделано правильно, вы можете потерять много времени, пытаясь отладить запутанный код. Тем не менее, если это сделано правильно, появление новых ошибок является редкой проблемой, и вы можете легко определить, является ли это ошибкой запутывания, с помощью временная замена кода на не обфусцированный код.
  • Обфускация - это НЕ пустая трата времени - это инструмент. При правильном использовании вы можете заставить других тратить кучу времени;)

Фантастика обфускации Javascript: (я пропущу этот раздел;))

Ответ на Q2 - Предлагаемые инструменты обфускации:

  • Для обширного списка обфускаторов javascript : malwareguru.org . Мой личный выбор - jscrambler.com.

Ответ на вопрос 3 - опыт использования обфусцированного кода

  • На сегодняшний день нет новых ошибок, вносимых обфускацией.
  • Намного лучшее удержание клиентов. Они должны прийти к источнику, чтобы получить его;)
  • Некоторые антивирусные инструменты сообщают о случайных ложных срабатываниях. Можно протестировать перед развертыванием любого нового кода с помощью такого инструмента, как Virustotal.com
4
ответ дан 29 November 2019 в 03:59
поделиться
Другие вопросы по тегам:

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