Czy powinienem martwić się „piractwem Javascript”?

11

Jeśli napiszę aplikację JavaScript po stronie klienta (przy odrobinie interakcji z serwerem), w jaki sposób mogę zapobiec kopiowaniu plików JavaScript do własnej witryny? W ogóle powinienem?

sjmulder
źródło

Odpowiedzi:

34

Czy powinno cię to obchodzić? Nie.

Czemu? Ponieważ tak naprawdę nic nie możesz na to poradzić.

Niektórzy przewidywalnie sugerują zaciemnianie. Działa to w Javie i .Net, ale Python, JavaScript i Perl są zwykłym tekstem, więc naprawdę niewiele możesz zrobić. Wartość w Twojej witrynie jest niewątpliwie po stronie serwera, więc nie martw się o Javascript.


źródło
1
Jeśli uda mi się dowiedzieć, co muszę wiedzieć o zdemontowanej (rzekomo) zaciemnionej Javie, myślę, że potrafię zarządzać Javascriptem i nie jestem ekspertem od takiego „hakowania” lub inżynierii wstecznej. „Informacje pragną być wolne” (cytat gdzieś słyszałem).
2
JavaScript ma wrodzoną obronę: jest powiązany z kodem na serwerze, co jest niedostępne. Zaciemnianie jest placebo. Utrudnia także diagnozowanie otrzymywanych raportów o błędach. Jeśli ktoś zamierza cię zdzierać (i myślę, że przeceniasz wartość swojego kodu JS), nie możesz wiele zrobić
1
A co to za fajna sztuczka?
2
Niższe głosy rozśmieszają mnie. Javascript jest najlepiej używany jako narzędzie do ulepszania twojej witryny. Jedynym kodem, który warto chronić, jest kod ujawniający informacje o wewnętrznym funkcjonowaniu Twojej witryny i Twojej firmy. Żadna z tych rzeczy nie należy do skryptu klienta na początek!
1
@Jim: nie wiem. Myślę, że liczba ta wynosi obecnie 17 głosów pozytywnych, 8 głosów negatywnych, a ze względu na codzienną liczbę powtórzeń mój przedstawiciel z tej odpowiedzi to ... -16.
14

Najlepsze, co możesz zrobić, to zaciemnić kod, aby inni mieli trudności z jego modyfikacją. Oczywiście zachowujesz kopię oryginału.

Jako bonus, zaciemniony kod powinien być mniejszy, a zatem szybszy w ładowaniu.

IAdapter
źródło
To się nazywa minimalizacja Javascript, prawda?
Jonathan Leffler
4
faktycznie minifikacja
Matt Briggs
9

Dlaczego się martwisz Widzę dwa powody, dla których może to być: 1) Piszesz komercyjną bibliotekę JavaScript. Rozwiązanie: zdobądź kolejny biznesplan, biblioteki JavaScript są zwykle bezpłatne. Być może możesz zarabiać pieniądze w małej niszy przedsiębiorstw, ale najprawdopodobniej i tak nie będą używać nielegalnie skopiowanego kodu.

2) Martwisz się, że twój konkurent skopiuje twoją stronę. Jeśli tak, możesz być pewny, że zawsze będziesz o krok przed nimi. Bardziej prawdopodobne jest, że będą pisać własny kod i kopiować wygląd i zachowanie Twojej witryny i nic nie może cię przed tym uratować, z wyjątkiem uzyskania głupich patentów na oprogramowanie, np. Zakupy Amazon jednym kliknięciem.

IOW, nie martw się. Umieść informację o prawach autorskich, prosząc ludzi o informację, czy używają twoich rzeczy. Jeśli zrobi to wystarczająca liczba osób, skorzystaj z faktu, że stworzyłeś użyteczną bibliotekę, aby uzyskać uznanie wśród maniaków, co prawdopodobnie będzie korzystne na dłuższą metę.

erikkallen
źródło
To aplikacja internetowa, a nie biblioteka :). Dzięki za # 2.
6

Nie. Nie próbuj „chronić” języka skryptowego po stronie klienta. Zaciemnianie nie działa. Minifikacja ma swoje zastosowania (ale antypiractwo nie jest jednym z nich)

Polecam również przeciwko minifying kodu chyba że masz tysiące wejść dziennie, gdzie kilka dodatkowych kilobajtów na życzenie będzie zauważalna różnica (i tylko to, że po kompresji wszystkich obrazów, których używasz prawidłowo, co pozwoli Ci zaoszczędzić o wiele więcej niż kilka KB, konfiguracja buforowania poprawnie itd.)

Nawet jeśli zminimalizujesz / zaciemnisz JavaScript, ludzie nadal mogą dość trywialnie skopiować go na swoją stronę. Trochę trudniej będzie go zmodyfikować, ale w zależności od tego, co robi skrypt, może to nie mieć znaczenia. Na przykład, edytor WMD, o którym wspominali ludzie, jest dostarczany do użytku publicznego, minimalizowany.

Obfuskacja i minimalizacja mogą być podobne, ale jeśli właściwie zaciemnisz kod, musisz w zasadzie przepisać duże segmenty, aby utrudnić jego zrozumienie. To sprawia, że ​​kod jest bardziej skomplikowany i znacznie trudniejszy w obsłudze (dla ty), więc wprowadzisz błędy .. Jeśli twój Javascript zostanie uszkodzony, to zapobiegnie piractwu, ponieważ nikt nie będzie chciał go używać (ani kraść) .. ale, niestety, to nie jest dobre.

Jedną z wielkich zalet Javascript jest to, że każdy może kliknąć prawym przyciskiem myszy / wyświetlić źródło i uczyć się Javascript, patrząc na działający kod na żywo. Jeśli martwisz się, że ludzie będą go przeglądać i kopiować, web / JavaScript nie jest t właściwy język ..

Polecam umieszczenie komentarza na początku wszystkich twoich .jsplików i <script>bloków, wraz z twoimi informacjami (nazwa, strona internetowa) i pewnego rodzaju licencja. W zależności od tego, co to jest kod, być może umieszczenie uwagi z informacją: „Jeśli używasz całego lub części tego kodu w projekcie, daj mi znać!” może być znacznie skuteczniejszy niż „Nigdy nie używaj tego kodu w żadnym innym celu!”

dbr
źródło
4

Możesz zaciemnić (lub przynajmniej zminimalizować) kod, aby go zniechęcić (chociaż nie jest to nie do powstrzymania dla kogoś, kto ma czas. Na przykład deobfuscation StackOverflow edytora WMD (ale to był dobry powód!)).

Naprawdę każdy kod, który umieścisz w interfejsie, będzie publiczny i dostępny dla wszystkich do zobaczenia / użycia.

Ross
źródło
Redaktor WMD nie był zaciemniony, tylko zminimalizowany.
Minimalizowanie JavaScript ma również pozytywny wpływ na zaciemnianie go ... var va = fa (); jest równie zaciemnione.
Unkwntech
4

Po co się w ogóle martwić? Jeśli twoje skrypty są warte kradzieży, możesz zamiast tego zrobić je open source i uzyskać pomoc w ich dopracowaniu.


źródło
Poza tym potencjalnie zyskujesz dla nich kredyt i dobry PR. Jeśli nie możesz sprawić, by te rzeczy działały dla Ciebie w konwencjonalnym sensie biznesowym, sprawdź, jak możesz sprawić, by działały dla Ciebie na inne sposoby.
Jon Hopkins,
4

Naprawdę nie możesz, ponieważ jest to język interpretowany, który jest zawsze dostarczany w postaci kodu źródłowego. Nawet zaciemnianie niewiele pomoże, jeśli pirat jest wystarczająco zmotywowany.

(Przykład przypadku: edytor StackOverflow WMD , który - mówiąc ściśle - może być postrzegany jako piractwo, chociaż wiem, że Jeff i Dana mieli tylko dobre intencje)

Michael Stum
źródło
4

Nie. Nie powinieneś się w ogóle martwić.

Jeśli Twoja firma jest zależna od tajności kodu JavaScript, istnieje z tym poważny problem.

W przeciwnym razie nie przejmuj się. Być może powinieneś spróbować zminimalizować kod JavaScript, aby strony ładowały się szybciej.

Niyaz
źródło
3

Używam GWT (Google Web Toolkit) do pisania aplikacji internetowych, w których cały kod jest napisany w Javie i może być debugowany i testowany za pomocą narzędzi skoncentrowanych na Javie, ale w celu wydania jest konwertowany na JavaScript.

Gdy nie jest włączony tryb PRETTYlub DETAILED, JavaScript generowany przez GWT jest bardzo wysoce zoptymalizowany i zaciemniony, co czyni go bardzo niepraktycznym dla inżynierii wstecznej. (Tradycyjny zaciemniacz JavaScript zapewni część tych korzyści - ale nie tam, gdzie optymalizacje zależą od zdolności GWT do szczegółowego czyszczenia gałęzi i analizy ścieżki kodu).

To powiedziawszy, ogólnie rzecz biorąc, jestem -1 w sprawie zaciemnienia - oznacza to na przykład, że legalni klienci są mniej zdolni do pomocy w rozwiązywaniu ich problemów, nawet jeśli mają umiejętności programistyczne i kopię FireBug. Jesteś oryginalnym autorem - znasz kod lepiej niż ktokolwiek inny, a to daje przewagę konkurencyjną nad kimś, kto próbuje tanio podrobić; ponadto, jeżeli taki konkurent faktycznie zarabia na czymś, co ukradł bez pozwolenia, to otwiera się na to, że pieniądze te (lub potencjalnie potroi sumę) są zabrane w procesie; uzasadniona i poważna konkurencja nie pójdzie tą drogą i po co martwić się o inny rodzaj?

Charles Duffy
źródło
2

W naszej aplikacji internetowej używamy dużo kodu JavaScript (i dużo serwera) i zdecydowaliśmy się „zaciemnić” JavaScript, usuwając wszelkie spacje, podziały wierszy itp. - to tak naprawdę nie chroni twojego kodu, ale bardzo utrudniają czytanie i rozumienie, a najprawdopodobniej inni nie będą się tym przejmować z powodu włożonego wysiłku.

Powodem tego jest jednak nie tyle, że nie chcemy, aby ktokolwiek kopiował części naszego kodu, ale raczej zniechęcamy naszych partnerów / klientów, którym dostarczamy kod, do dokonywania modyfikacji bezpośrednio w „naszych plikach” (w celu uniknąć problemów po zainstalowaniu następnej aktualizacji) ...

Uwaga: zaciemnianie ma jedną wadę, o której należy pamiętać: jeśli kiedykolwiek będziesz musiał debugować ten kod skryptu, sam nie będziesz w stanie pracować z zaciemnioną informacją, więc zawsze będzie to wymagało skopiowania pliku „czytelnego” do pierwszy serwer.


źródło
2
Formatowanie kodu JavaScript w edytorze lub używanie „ładnej drukarki” nie nazwałbym dużym wysiłkiem. Zmniejszenie tych rzeczy może być przydatne do zmniejszenia przepustowości (tj. Zmniejszenia), ale to wszystko.
Jeśli plik JavaScript jest duży, jest to duży wysiłek. Ponadto „ładne drukarki” nie działają dobrze (lub wcale nie działają) w plikach typu „jedna linia zawiera cały kod”.
1

Przyjmując założenie, że każdy wystarczająco dobry javascript zostanie złapany przez innych, może po prostu popłyniesz z prądem i wykorzystasz go w pełni?

Uderz w licencję, która zezwala na użycie, wymagając na przykład atrybucji. Może z klauzulą ​​niekomercyjną, taką jak niektóre warianty Creative Commons, jeśli naprawdę musisz.

JosefAssad
źródło
1

Większość logiki aplikacji powinna być po stronie serwera. JavaScript powinien obsługiwać tylko GUI i proste interakcje z serwerem. Jeśli kod JavaScript zawiera wystarczającą logikę aplikacji, że martwisz się, że ktoś go ukradnie, prawdopodobnie robisz coś złego.

davogones
źródło
0

Jeśli masz tajemnice handlowe, możesz przenieść najbardziej wrażliwe części kodu do ActionScript (Flash). Jest to zasadniczo ten sam język co JavaScript i jest przechowywany w formie tokenizowanej.


źródło
0

Jeśli martwisz się, że zdecydowani hakerzy kradną twój kod, przepraszam, nic nie możesz zrobić. Ale są sposoby, aby uczynić to niewygodnym dla zwykłych złodziei. Stosunkowo łatwym sposobem na to jest załadowanie niektórych części XMLHttpRequesti eval()ich użycie ; może to być ukryte jako (lub włączone) coś, co pobiera dane JSON i wykorzystuje je do zapełnienia strony.

użytkownik 281377
źródło