Ответы:
Должны ли вы заботиться? Нет.
Зачем? Потому что ты ничего не можешь с этим поделать.
Некоторые предсказуемо предложили запутывание. Это работает для Java и .Net, но Python, Javascript и Perl - это простой текст, поэтому вы действительно мало что можете сделать. Значение на вашем сайте, несомненно, относится к серверной части, поэтому не беспокойтесь о Javascript.
Лучшее, что вы можете сделать - это запутать код, чтобы другим было трудно его модифицировать. Конечно, вы сохраняете копию оригинала.
В качестве бонуса, запутанный код должен быть меньше и, следовательно, быстрее загружаться.
Почему ты переживаешь? Я вижу две причины, по которым это может быть: 1) Вы пишете коммерческую библиотеку JavaScript. Решение: Получить другой бизнес-план, библиотеки JavaScript, как правило, бесплатны. Возможно, вы можете заработать деньги в небольшой нише предприятий, но они, скорее всего, не собираются использовать незаконно скопированный код в любом случае.
2) Вы беспокоитесь, что ваш конкурент собирается скопировать ваш сайт. Если они это сделают, вы можете быть уверены, что вы всегда будете на шаг впереди них. Скорее всего, они собираются написать свой собственный код и скопировать внешний вид и поведение вашего сайта, и ничто не может вас спасти от этого, кроме получения глупых патентов на программное обеспечение, например, покупки в Amazon одним щелчком мыши.
Я не волнуюсь. Поместите уведомление об авторском праве, попросив людей сообщить вам, используют ли они ваши материалы. Если достаточно людей делают это, используйте тот факт, что вы создали полезную библиотеку, чтобы получить кредит среди гиков, что, вероятно, будет полезно в долгосрочной перспективе.
Нет. Не пытайтесь "защитить" язык сценариев на стороне клиента. Запутывание не работает. Minifying имеет свое применение (но антипиратство не входит в их число)
Я хотел бы также рекомендовать против Минимизация кода , если вы получите тысячи посещений в день, где несколько дополнительных килобайт на каждый запрос будет заметная разница (и только это сделать, как только вы сжать все изображения , которые вы используете правильно, что сэкономит вам гораздо больше, чем несколько КБ, правильно настроить кэширование и т. д.)
Даже если вы минимизируете / запутываете Javascript, люди все равно могут довольно просто скопировать его на свой сайт. Это будет немного сложнее изменить, но в зависимости от того, что делает скрипт, это может не иметь значения. Например, упомянутый людьми редактор ОМУ поставляется для публичного использования и минимизируется.
Запутывание и минификация могут быть похожими, но если вы должны были правильно запутать код, вам пришлось бы в основном переписать его большие сегменты, чтобы было трудно его понять. Это делает код более сложным и гораздо сложнее иметь дело (для вы), поэтому представит ошибки .. Если ваш Javascript станет глючным, это предотвратит пиратство, поскольку никто не захочет его использовать (или украсть) ... но, ошибаться, это не хорошо.
Одна из замечательных особенностей Javascript - это то, что каждый может щелкнуть правой кнопкой мыши / просмотреть исходный код и изучить Javascript, посмотрев на работающий код. Если вы беспокоитесь о людях, которые смотрят на код и копируют его, веб / Javascript не ' т правильный язык ..
Я бы порекомендовал поместить комментарий в начале всех ваших .js
файлов и <script>
блоков с вашей информацией (имя, веб-сайт) и какой-либо лицензией. В зависимости от того, что это за код, возможно, поместив уведомление с надписью «Если вы используете весь или весь этот код в проекте, пожалуйста, дайте мне знать об этом!» может быть гораздо более эффективным, чем «Не используйте этот код для каких-либо других целей!»
Вы можете запутать (или, по крайней мере, минимизировать) код, чтобы препятствовать этому (хотя это не может быть остановлено для того, у кого есть время. Например, деобфускация StackOverflow редактора WMD (но это было по уважительной причине!)).
На самом деле любой код, который вы разместите, будет общедоступным и доступным для просмотра и использования всеми.
Зачем беспокоиться об этом вообще? Если ваши сценарии стоят кражи, вы можете сделать их открытыми и получить помощь в их оттачивании.
Вы не можете, так как это интерпретируемый язык, который всегда поставляется в форме исходного кода. Даже запутывание не очень поможет, если пират достаточно мотивирован.
(Пример из примера: редактор ОМУ StackOverflow , который, строго говоря, можно рассматривать как пиратство, хотя я знаю, что у Джеффа и Даны были только благие намерения)
Я использую GWT (Google Web Toolkit) для написания веб-приложений, в которых весь код написан на Java и может быть отлажен и протестирован с помощью инструментов, ориентированных на Java, но преобразован в JavaScript для выпуска.
Когда не в PRETTY
или DETAILED
режиме, JavaScript, сгенерированный GWT, очень высоко оптимизирован и запутан, что делает его непрактичным для обратного проектирования. (Традиционный JavaScript-обфускатор обеспечит часть этих преимуществ - но не там, где оптимизации зависят от способности GWT выполнять детальное сокращение веток и анализ пути кода).
Тем не менее, в общем, я -1 на запутывании - это означает, например, что законные клиенты менее способны помочь вам разобраться в своих проблемах, даже если у них есть навыки разработки и копия FireBug. Вы оригинальный автор - вы знаете код лучше, чем кто-либо другой, и это дает вам конкурентное преимущество перед тем, кто пытается запустить дешевый подделку; кроме того, если любой такой конкурент фактически зарабатывает реальные деньги на чем-то, что они украли без разрешения, это открывает им возможность забрать эти деньги (или, возможно, утроить сумму) в судебном процессе; законная и серьезная конкуренция не пойдет по этому пути, и зачем беспокоиться о другом?
Мы используем много Javascript (и много серверного) кода для нашего веб-приложения, и мы решили «обфусцировать» Javascripts, удаляя любые пробелы, разрывы строк и т. Д. - это не будет реально защищать ваш код, но очень трудно читать и понимать, и, скорее всего, другие не будут беспокоиться из-за прилагаемых усилий.
Однако причина, по которой мы это делаем, заключается не столько в том, что мы хотим, чтобы кто-то копировал части нашего кода, но в том, чтобы отговаривать наших партнеров / клиентов, которым мы предоставляем код, вносить изменения непосредственно в «наши файлы» (для избежать проблем при установке следующего обновления) ...
Примечание: у обфускации есть один недостаток, о котором вы должны знать: если вам когда-нибудь понадобится отладить этот код скрипта, вы сами не сможете работать с обфусцированной информацией, поэтому это всегда будет включать копирование «читаемого» файла в сервер первый.
Если исходить из предположения, что любой достаточно хороший javascript будет подхвачен другими, как насчет того, чтобы просто плыть по течению и максимально использовать его?
Получите лицензию, разрешающую использование и требующую, например, атрибуции. Может быть, с некоммерческим предложением, как некоторые варианты Creative Commons, если вы действительно должны.
Большая часть логики вашего приложения должна быть на стороне сервера. Javascript должен обрабатывать только GUI и простые взаимодействия с сервером. Если ваш код Javascript содержит достаточную логику приложения, и вы беспокоитесь о том, что кто-то может его украсть, то вы, вероятно, делаете что-то не так.
Если у вас есть коммерческая тайна, вы можете переместить наиболее чувствительные части кода в ActionScript (Flash). По сути, это тот же язык, что и JavaScript, и он хранится в виде токенов.
Если вы беспокоитесь о решительных хардкорных хакерах, которые крадут ваш код, извините, вы ничего не можете сделать. Но есть способы сделать это неудобным для случайных воров. Относительно простой способ сделать это - загрузить некоторые детали, используя XMLHttpRequest
и eval()
их; это может быть замаскировано как (или включено в) что-то, что получает данные JSON и использует их для заполнения страницы.