Должен ли я беспокоиться о «пиратстве Javascript»?


11

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

Ответы:


34

Должны ли вы заботиться? Нет.

Зачем? Потому что ты ничего не можешь с этим поделать.

Некоторые предсказуемо предложили запутывание. Это работает для Java и .Net, но Python, Javascript и Perl - это простой текст, поэтому вы действительно мало что можете сделать. Значение на вашем сайте, несомненно, относится к серверной части, поэтому не беспокойтесь о Javascript.


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

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

1
И что за крутой трюк под вопросом?

2
Плохие голоса заставляют меня смеяться. Javascript лучше всего использовать в качестве утилиты для улучшения вашего сайта. Единственный код, который стоит защищать, - это код, который предоставляет информацию о внутренней работе вашего сайта и вашей компании. Ни одна из этих вещей не входит в клиентский скрипт для начала!

1
@ Джим: разве я не знаю это. Я думаю, что в настоящее время количество голосов составляет 17, 8 голосов, и из-за того, что я нахожусь в ежедневной шапке, мой представитель из этого ответа ... -16.

14

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

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


Это называется минимизация Javascript, не так ли?
Джонатан Леффлер

4
минификация на самом деле
Мэтт Бриггс

9

Почему ты переживаешь? Я вижу две причины, по которым это может быть: 1) Вы пишете коммерческую библиотеку JavaScript. Решение: Получить другой бизнес-план, библиотеки JavaScript, как правило, бесплатны. Возможно, вы можете заработать деньги в небольшой нише предприятий, но они, скорее всего, не собираются использовать незаконно скопированный код в любом случае.

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

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


Это веб-приложение, а не библиотека :). Спасибо за # 2.

6

Нет. Не пытайтесь "защитить" язык сценариев на стороне клиента. Запутывание не работает. Minifying имеет свое применение (но антипиратство не входит в их число)

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

Даже если вы минимизируете / запутываете Javascript, люди все равно могут довольно просто скопировать его на свой сайт. Это будет немного сложнее изменить, но в зависимости от того, что делает скрипт, это может не иметь значения. Например, упомянутый людьми редактор ОМУ поставляется для публичного использования и минимизируется.

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

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

Я бы порекомендовал поместить комментарий в начале всех ваших .jsфайлов и <script>блоков с вашей информацией (имя, веб-сайт) и какой-либо лицензией. В зависимости от того, что это за код, возможно, поместив уведомление с надписью «Если вы используете весь или весь этот код в проекте, пожалуйста, дайте мне знать об этом!» может быть гораздо более эффективным, чем «Не используйте этот код для каких-либо других целей!»


4

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

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


Редактор ОМУ не был запутан, он был просто минимизирован.

Сокращение JavaScript также имеет приятный побочный эффект - запутывает его ... var va = fa (); так же запутан.
Unkwntech

4

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


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

4

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

(Пример из примера: редактор ОМУ StackOverflow , который, строго говоря, можно рассматривать как пиратство, хотя я знаю, что у Джеффа и Даны были только благие намерения)


4

Нет. Ты не должен волноваться вообще.

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

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


3

Я использую GWT (Google Web Toolkit) для написания веб-приложений, в которых весь код написан на Java и может быть отлажен и протестирован с помощью инструментов, ориентированных на Java, но преобразован в JavaScript для выпуска.

Когда не в PRETTYили DETAILEDрежиме, JavaScript, сгенерированный GWT, очень высоко оптимизирован и запутан, что делает его непрактичным для обратного проектирования. (Традиционный JavaScript-обфускатор обеспечит часть этих преимуществ - но не там, где оптимизации зависят от способности GWT выполнять детальное сокращение веток и анализ пути кода).

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


2

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

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

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


2
Я бы не назвал форматирование Javascript в редакторе или использование какой-либо формы «симпатичного принтера» большим трудом. Сокращение этих вещей может быть полезно для уменьшения пропускной способности (то есть минимизации), но это все.

Если файл Javascript большой, это много усилий. Кроме того, «красивые принтеры» не работают (или не работают вообще) для файлов типа «одна строка содержит весь код».

1

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

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


1

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


0

Если у вас есть коммерческая тайна, вы можете переместить наиболее чувствительные части кода в ActionScript (Flash). По сути, это тот же язык, что и JavaScript, и он хранится в виде токенов.


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.