Чи варто турбуватися про "піратство Javascript"?


11

Якщо я напишу програму Javascript на стороні клієнта (з невеликою частиною взаємодії з сервером), як я можу запобігти людям копіювати файли Javascript на свій власний сайт? Чи повинен я взагалі?

Відповіді:


34

Ви повинні турбуватися? Немає.

Чому? Тому що насправді з цим нічого не можна зробити.

Деякі з них передбачувано пропонують запаморочення. Це працює для Java та .Net, але Python, Javascript та Perl - це звичайний текст, тому дійсно дуже мало. Цінність вашого веб-сайту, безсумнівно, сторона сервера, тому не хвилюйтесь про Javascript.


1
Якщо я можу зрозуміти, що мені потрібно знати від розібраної (нібито) заплутаної Java, я думаю, що я можу керувати Javascript і навряд чи я фахівець у таких "хакерських" або зворотних розробках. "Інформація прагне бути вільною" (цитата, яку я десь чув).

2
У Javascript є вроджена захист: він прив’язаний до коду сервера, який є недоступним. Обтурація - плацебо. Це також ускладнює діагностику отриманих вами повідомлень про помилки. Якщо хтось збирає вас зірвати (і я думаю, що ви завищуєте значення свого коду JS), ви не можете багато чого зробити

1
І про який крутий трюк йдеться?

2
Вниз голоси змушують мене сміятися. Javascript найкраще використовувати як утиліту для покращення вашого сайту. Єдиний код, який варто захистити, - це код, який розкриває інформацію про внутрішню роботу вашого сайту та вашої компанії. Жодне з цих речей не належить до сценарію клієнта для початку!

1
@Jim: чи я цього не знаю. Я думаю, що зараз нараховується 17 версій, 8 голосів і через те, що я буду щоденний реп-реп, моя відповідь від цієї відповіді ... -16.

14

Найкраще, що ви можете зробити, це придушити код, щоб іншим було важко змінити його. Звичайно, ви зберігаєте копію оригіналу.

Як бонус, затуманений код повинен бути меншим і, отже, швидшим для завантаження.


Це називається мінімізацією Javascript, чи не так?
Джонатан Леффлер

4
фактично мініфікація
Метт Бріггс

9

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

2) Ви переживаєте, що ваш конкурент збирається скопіювати ваш сайт. Якщо вони дійдуть, ви можете бути впевнені, що ви завжди будете на крок попереду. Швидше за все, вони збираються написати власний код і скопіювати зовнішній вигляд і поведінку вашого сайту, і нічого не може врятувати вас від цього, крім отримання дурних патентів на програмне забезпечення, наприклад, покупки Amazon одним натисканням кнопки.

IOW, не хвилюйся. Розмістіть повідомлення про авторські права з проханням сказати людям, чи використовують вони ваші речі. Якщо це достатньо людей, це використовуйте той факт, що ви створили корисну бібліотеку, щоб отримати кредит серед вун, що, ймовірно, буде корисним у перспективі.


Це веб-додаток, а не бібліотека :). Дякуємо за №2.

6

Ні. Не намагайтеся "захистити" мову сценарію на стороні клієнта. Затухання не працює. У мінімізації є її використання (але антипіратство не одне з них)

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

Навіть якщо ви мінімізуєте / придушуєте Javascript, люди все ще можуть досить тривіально скопіювати його на свій власний сайт. Це буде трохи складніше змінити, але залежно від того, що робить сценарій, це може не мати значення. Наприклад, згадані люди редактора WMD постачаються, для загального користування, впорядковані.

Обфускування та мінімізація можуть бути схожими, але якби ви належним чином затуманили код, вам доведеться в основному переписати великі його сегменти, щоб ускладнити його розуміння. Це робить код складнішим і набагато складнішим для роботи (для ви), тому ви введете помилки. Якщо ваш Javascript стане баггі, це запобіжить піратству, оскільки ніхто не захоче його використовувати (або вкрасти) .. але, помилково, це не добре.

Однією з найважливіших речей щодо Javascript є те, що хтось може правою кнопкою миші / переглядати джерело та вивчати Javascript, переглядаючи живий, робочий код. Якщо ви турбуєтесь про те, щоб люди переглядали код та копіювали його, web / Javascript isn ' t правильна мова ..

Я рекомендую розмістити коментар на початку всіх ваших .jsфайлів і <script>блоків, з вашою інформацією (ім'я, веб-сайт) та якоюсь ліцензією. Залежно від того, що таке код, можливо, розміщуючи повідомлення, "Якщо ви використовуєте весь або частину цього коду в проекті, будь ласка, повідомте мене про це!" може бути набагато ефективнішим, ніж "Ніколи не використовуйте цей код ні для яких інших цілей!"


4

Ви можете приховати (або принаймні мінімізувати) код, щоб відмовити це (хоча це не можна зупинити для того, хто має час. Наприклад, знешкодження редактора WMD StackOverflow (але це з поважної причини!)).

Дійсно, будь-який код, який ви ставите передній, стане загальнодоступним та доступним для перегляду / використання для всіх.


Редактор WMD не був розгублений, він просто вдосконалений.

У мінімізації JavaScript є приємний побічний ефект, який він також заблукає ... var va = fa (); так само, як і затуманено.
Unkwntech

4

Навіщо взагалі про це турбуватися? Якщо ваші сценарії варті крадіжки, ви можете замість цього зробити їх відкритими і отримати допомогу в їх відточуванні.


Крім цього, ви також можете отримати кредит та хороший піар для них. Якщо ви не можете змусити ці речі працювати для вас у звичайному діловому сенсі, подивіться, як ви можете змусити їх працювати для вас іншими способами.
Джон Хопкінс

4

Насправді ви не можете, оскільки це інтерпретована мова, яка завжди постачається у формі вихідного коду. Навіть затуманення не допоможе сильно, якщо пірат достатньо мотивований.

(Приклад прикладу: Редактор WMD StackOverflow , який можна - строго кажучи - сприймати як піратство, хоча я знаю, що Джефф і Дана мали лише добрі наміри)


4

Ні. Ви взагалі не повинні турбуватися.

Якщо ваш бізнес залежить від секретності вашого коду JavaScript, з ним є серйозна проблема.

Інакше просто не турбуйся. Можливо, вам слід спробувати мінімізувати свій JavaScript-код, щоб швидше завантажувати сторінки.


3

Я використовую GWT (веб-інструментарій Google) для написання веб-додатків, у яких код написаний на Java і може бути налагоджений і перевірений інструментами, орієнтованими на Java, але перетворений у JavaScript для випуску.

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

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


2

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

Причиною цього ми є не стільки в тому, що ми не хочемо, щоб хтось копіював частини нашого коду, а скоріше відштовхували наших партнерів / клієнтів, яким ми доставляємо код, вносити зміни безпосередньо в "наші файли" (до уникайте проблем, коли встановлено наступне оновлення) ...

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


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

Якщо файл Javascript великий, це докладе великих зусиль. Крім того, "гарні принтери" не працюють добре (або взагалі не працюють) у файлах типу "один рядок містить увесь код".

1

Виходячи з припущення, що будь-який достатньо хороший JavaScript буде підхоплений іншими, як щодо того, щоб просто плавати з потоком і максимально використовувати його?

Похитайте ліцензію, яка дозволяє використовувати, вимагаючи, наприклад, атрибуції. Можливо, і з некомерційною пропозицією, на зразок деяких варіантів Creative Commons, якщо це дійсно потрібно.


1

Більшість логіки вашої програми має бути стороною сервера. Javascript повинен обробляти лише графічний інтерфейс і просту взаємодію з сервером. Якщо ваш код Javascript містить достатню логіку програми, що ви переживаєте за те, щоб хтось його викрав, ви, ймовірно, робите щось не так.


0

Якщо у вас є комерційна таємниця, ви можете перемістити найбільш чутливі частини коду до ActionScript (Flash). Це по суті та сама мова, що і JavaScript, і зберігається в токенізованому вигляді.


0

Якщо ви турбуєтесь про рішучі хардкорні хакери, які вкрадуть ваш код, вибачте, ви нічого не можете зробити. Але є способи зробити це незручним для випадкових злодіїв. Порівняно простий спосіб зробити це - завантаження деяких деталей за допомогою XMLHttpRequestта eval()їх; це може бути замасковано як (або включене в) щось, що отримує дані JSON і використовує їх для заповнення сторінки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.