Do czego służy
Obfuskator JavaScript przepisuje skrypt tak, że nadal działa dokładnie tak samo, ale jest znacznie trudniejszy do przeczytania i skopiowania przez ludzi. Nazwy zmiennych i funkcji zamieniają się w nic nieznaczące identyfikatory, takie jak _0x3f2a, literały tekstowe trafiają do zakodowanej tablicy, a na wyższych poziomach przepływ sterowania jest mieszany i dodawany jest martwy kod.
Przydaje się w grach przeglądarkowych, demach, widżetach i mechanizmach sprawdzania licencji, które dostarczasz jako zwykły JavaScript i nie chcesz, aby były kopiowane słowo w słowo.
Jak używać
- Wklej swój JavaScript lub otwórz plik
.js. - Wybierz Siłę:
- Niska zmienia nazwy lokalne i przenosi ciągi znaków do tablicy. Wynik pozostaje szybki i dość mały.
- Średnia dodaje kodowanie ciągów znaków, spłaszczanie przepływu sterowania i trochę martwego kodu.
- Wysoka stosuje wszystko z pełną siłą. Wynik może być wielokrotnie większy i zauważalnie wolniejszy.
- Włącz Zmieniaj nazwy globalne tylko wtedy, gdy nic poza skryptem nie odwołuje się do jego funkcji lub zmiennych najwyższego poziomu.
- Wyłącz Wynik w jednym wierszu, jeśli chcesz, aby wynik był rozłożony na kilka wierszy.
- Skopiuj lub pobierz zaciemniony kod i przetestuj go przed wdrożeniem.
Przykład
Przykład definiuje funkcję greet i licznik odwiedzin. Po obfuskacji z niską siłą kod to jeden wiersz szesnastkowych nazw, a mimo to po uruchomieniu nadal wypisuje Hello, Ada! You have visited 1 time(s).
Obfuskacja a minifikacja
Minifikacja, wykonywana przez minifikator JavaScript i CSS, usuwa białe znaki i skraca nazwy, aby pliki były mniejsze i szybciej się pobierały. Obfuskacja działa odwrotnie, jeśli chodzi o rozmiar: celowo dodaje pośrednie warstwy, aby kod był trudniejszy do zrozumienia. Wiele projektów minifikuje wszystko, a obfuskuje tylko kilka plików zawierających logikę wartą ochrony.
Ograniczenia
Obfuskacja nie ochroni sekretów. Wszystko, co przeglądarka może uruchomić, użytkownik może w końcu przejrzeć, więc klucze API i reguły biznesowe, które muszą pozostać prywatne, trzymaj na serwerze. Mocne ustawienia spowalniają też kod, więc unikaj ich w gorących pętlach i na stronach wrażliwych na wydajność.
FAQ
› Czy obfuskacja zmienia działanie mojego kodu?
Nie. Zaciemniony skrypt działa tak samo jak oryginał; zmienia się tylko jego forma. Zawsze uruchamiaj testy na zaciemnionym buildzie, bo kod, który analizuje własne źródło lub nazwy funkcji, może zachowywać się inaczej.
› Czy zaciemniony kod można odwrócić?
Nie w pełni, ale zdeterminowana osoba z odpowiednią ilością czasu i tak ustali, co robi. Traktuj obfuskację jako przeszkodę dla przypadkowego kopiowania, nigdy jako miejsce do ukrywania sekretów, takich jak klucze API.
› Kiedy włączyć Zmieniaj nazwy globalne?
Tylko gdy skrypt jest samodzielny. Zmiana nazw globalnych psuje atrybuty HTML, inne skrypty lub testy, które wywołują twoje funkcje najwyższego poziomu po nazwie.
› Czy mój kod jest wysyłany na serwer?
Nie. Obfuskacja odbywa się w twojej przeglądarce za pomocą otwartoźródłowej biblioteki javascript-obfuscator.