Odpowiedzi:
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.
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.
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ę.
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 .js
plikó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!”
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.
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.
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)
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 PRETTY
lub 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?
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.
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.
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.
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 XMLHttpRequest
i 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.