Najczęściej zadawane pytania
Pytania ogólne
Częste pytania o obfuskację JavaScriptu i sposób jej działania.
Powodów do ochrony kodu jest wiele: uniemożliwienie zwykłego kopiowania i wklejania Twojej pracy (szczególnie ważne w projektach po stronie klienta, takich jak gry HTML5), usunięcie komentarzy i białych znaków, dzięki czemu kod ładuje się szybciej i jest trudniejszy do zrozumienia, oraz ochrona pracy, za którą nie otrzymano jeszcze zapłaty, tak aby można ją było pokazać klientowi bez przekazywania kodu źródłowego.
Obfuskacja VM (maszyny wirtualnej) przekształca kod JavaScript w niestandardowy kod bajtowy wykonywany przez osadzony interpreter. W przeciwieństwie do standardowej obfuskacji, która nadal generuje czytelny JavaScript, obfuskacja VM całkowicie ukrywa oryginalną strukturę kodu. Narzędzia do analizy statycznej nie są w stanie zrozumieć logiki bez uprzedniego odtworzenia całej maszyny wirtualnej. Więcej informacji znajdziesz w naszym przewodniku po obfuskacji VM.
Tak! Udostępniamy opcję selektywnego stosowania obfuskacji VM do wybranych funkcji lub metod. Wystarczy oznaczyć docelową funkcję specjalnym komentarzem (/* javascript-obfuscator:vm */), a tylko ta funkcja zostanie przetworzona przez obfuskator VM. To idealne rozwiązanie, gdy chcesz chronić wyłącznie najbardziej wrażliwe algorytmy, pozostawiając resztę kodu ze standardową obfuskacją lub bez zmian, co minimalizuje narzut wydajnościowy.
Nie. Kluczy API, sekretów ani danych uwierzytelniających NIGDY nie wolno przechowywać w kodzie front-endu. Nawet przy najwyższym poziomie obfuskacji zdeterminowany atakujący może wydobyć dowolne dane z kodu JavaScript działającego po stronie klienta. Obfuskacja utrudnia inżynierię wsteczną, ale nie jest szyfrowaniem i nie należy na niej polegać przy zabezpieczaniu sekretów. Zamiast tego przechowuj sekrety na serwerze zaplecza, korzystaj ze zmiennych środowiskowych po stronie serwera, kieruj wywołania API przez własny backend, aby ukryć klucze, lub używaj krótkotrwałych tokenów wydawanych przez serwer.
Żadna obfuskacja nie jest w 100% niezawodna — JavaScript ostatecznie działa w środowisku kontrolowanym przez atakującego, w przeglądarce lub w Node.js, a inspekcja pamięci w czasie wykonania jest tam zawsze możliwa. Żadna obfuskacja JavaScriptu tego nie zablokuje; może jedynie podnieść koszt dotarcia do tych danych. Obecnie nie istnieją żadne automatyczne usługi deobfuskacji online dla kodu chronionego przez VM — każda obfuskacja kompiluje kod do niestandardowego kodu bajtowego z unikalną maszyną wirtualną, co uniemożliwia stworzenie uniwersalnych narzędzi. Standardową obfuskację pokonać jest znacznie łatwiej: często można ją częściowo odwrócić przy użyciu automatycznych narzędzi i beautyfikatorów. Obfuskacja VM wymaga pełnego odtworzenia maszyny wirtualnej, odszyfrowania i zdekodowania jej kodu bajtowego, poznania zestawu instrukcji oraz prześledzenia wykonania — a to proces, który może zająć tygodnie intensywnej pracy. Bez mechanizmu VM Self Defending zaawansowane agenty AI (np. Claude Opus 4.7) potrafią prześledzić kod bajtowy i z grubsza odtworzyć oryginalny kod w przypadku mniejszych baz kodu. Po włączeniu mechanizmu VM Self Defending warstwowe zabezpieczenia anty-LLM — ochrona przed hookowaniem, weryfikacja integralności między realmami oraz kontrola natywności kodu bajtowego — zakłócają dynamiczne techniki, którymi agent posługuje się przy analizie kodu bajtowego: instrumentację, hookowanie i uruchamianie w piaskownicy. Statyczny odczyt pliku pozostaje możliwy, lecz ujawnia jedynie nieprzejrzysty kod bajtowy, a każda próba obserwacji interpretującego go środowiska uruchomieniowego uruchamia kontrolę integralności. Na podstawie samego pliku automatyczna deobfuskacja przy pomocy AI staje się niepraktyczna. Aby dodatkowo wzmocnić swój kod: opakuj wrażliwe funkcje w IIFE, dzięki czemu ich nazwy zostaną w pełni przekształcone, oraz włącz opcje wzmacniające, takie jak szyfrowanie kodu bajtowego. Dowiedz się więcej o tym, jak VM przekształca kod.
Obfuskacja VM to złożona technologia i niektóre przypadki brzegowe mogą nie być w pełni obsługiwane. Jeśli Twój kod przestaje działać po obfuskacji VM, możesz zawęzić problem, używając vmTargetFunctionsMode: 'comment' do selektywnej obfuskacji wybranych funkcji. Zajrzyj do naszego przewodnika rozwiązywania problemów po instrukcje krok po kroku, jak zidentyfikować problematyczny kod i zgłosić błąd.
Obfuskator dodaje nowy kod chroniący przed debugowaniem i inżynierią wsteczną. Ciągi znaków są zamieniane na zapis szesnastkowy, a przy obfuskacji VM do kodu bajtowego dołączany jest cały interpreter maszyny wirtualnej. Nie przejmuj się zbytnio rozmiarem — zobfuskowany kod bardzo dobrze kompresuje się algorytmem GZIP, który większość serwerów ma domyślnie włączony.
Każda obfuskacja w pewnym stopniu wpływa na wydajność. Standardowa obfuskacja powoduje minimalny narzut. Obfuskacja VM wpływa na wydajność znacznie mocniej, a skala tego wpływu silnie zależy od kodu — na przykład kod bajtowy intensywnie korzystający z rekurencji będzie zauważalnie wolniejszy. Średnio preset low powoduje spowolnienie około 10x, a preset anty-LLM z Self Defending i Debug Protection około 12x. Balans możesz dopracować, dostosowując opcje lub stosując obfuskację VM wyłącznie do wrażliwych fragmentów kodu. Wskazówki dotyczące optymalizacji znajdziesz w naszym przewodniku po dobrych praktykach.
Nie, nie jest to zalecane, a w niektórych przypadkach zepsuje kod (zwłaszcza po włączeniu opcji self-defending). Możesz natomiast przepuścić swój kod przez minifikator przed obfuskacją.
W przypadku plików mniejszych niż 4.4 MB kod źródłowy jest przetwarzany w całości w pamięci i natychmiast zwracany jako zobfuskowany wynik. Większe pliki (plany Team/Business) trafiają tymczasowo do bezpiecznego magazynu i są usuwane od razu po zakończeniu obfuskacji. Dodatkowo co 5 minut uruchamiane jest zadanie porządkujące, które usuwa wszystkie pliki starsze niż 5 minut. Twój kod nigdy nie jest przechowywany.
Nie, przywrócenie zobfuskowanego kodu do pierwotnej postaci jest niemożliwe, dlatego zachowaj oryginał w bezpiecznym miejscu.
Tak. W opcjach obfuskacji możesz wybrać „Node” jako środowisko docelowe, aby zoptymalizować wynik pod kątem środowiska Node.js.
Obsługujemy ES2015 (ES6) oraz wszystkie nowoczesne możliwości JavaScriptu, w tym składnię ES2022+, prywatne pola klas, async/await, opcjonalne łańcuchy wywołań i wiele innych. TypeScript i JSX trzeba skompilować do JavaScriptu przed obfuskacją. W planie płatnym możesz również obfuskować pliki HTML — dodaj atrybut data-javascript-obfuscator do tych znaczników <script>, które chcesz chronić, a zostaną one zobfuskowane pojedynczo, z zachowaniem struktury HTML. Pamiętaj, że kod w każdym oznaczonym skrypcie musi być samowystarczalny (bez odwołań do innych skryptów), a skrypty będące modułami ES są pomijane.
Zobfuskowany wynik — wraz z interpreterem VM i warstwą Self Defending — jest aktywnie wspierany i testowany w stale aktualizowanych przeglądarkach desktopowych oraz w systemie iOS 16+ (mniej więcej ostatnie 3 lata). Starsze przeglądarki są obsługiwane w miarę możliwości, aż do twardej granicy, jaką jest wsparcie modułów ES2015; wszystko poniżej, w tym Internet Explorer, pozostaje poza zakresem wsparcia.
Sprawdź nasze plany cenowe z ochroną VM albo wypróbuj darmową piaskownicę online ze standardową obfuskacją. Pełne omówienie znajdziesz w przewodniku pierwszych kroków.
Cennik i konto
Pytania o plany, rozliczenia i limity zużycia.
pricing.faq.usageMeasured.answer
pricing.faq.exceedLimit.answer
pricing.faq.upgradeDowngrade.answer
pricing.faq.cancel.answer
pricing.faq.paymentMethods.answer
