Dokumentacja
/
Przepisy
/

Dobre praktyki

Dobre praktyki

Jak skutecznie stosować obfuskację: co chronić, czego nie ruszać i czego obfuskacja nie jest w stanie za Ciebie zrobić.

Zalecenia

  • Obfuskuj tylko własny kod.

    Nie stosuj obfuskacji VM do skryptów zewnętrznych dostawców, bibliotek ani polyfilli. Są one już zminifikowane, a obfuskacja jedynie je spowolni.

  • Używaj trybu komentarzy do precyzyjnej ochrony.

    Ustaw vmTargetFunctionsMode na 'comment', a następnie oznacz komentarzem /* javascript-obfuscator:vm */ tylko wrażliwe funkcje, zamiast chronić wszystko. Zobacz Wskazywanie konkretnych funkcji.

  • Dokładnie testuj po obfuskacji.

    Zawsze testuj zobfuskowany kod w docelowym środowisku. Niektóre opcje mogą psuć kod w subtelny sposób. Zabezpieczenia wykonania reagują także na automatyzację testów i debuggery; zobacz Testy i CI.

  • Wyłączaj często wykonywane ścieżki z obfuskacji VM.

    Używaj vmExcludeFunctions dla pętli animacji, renderowania w czasie rzeczywistym lub często wywoływanego kodu. Dopasowuje ona tylko nazwy funkcji najwyższego poziomu (przy Async Executor - najbardziej zewnętrznych funkcji async); aby wyłączyć z VM zagnieżdżony, często wykonywany kod, użyj trybu komentarzy i oznacz tylko funkcje wymagające ochrony.

Ważna uwaga dotycząca bezpieczeństwa

Nigdy nie przechowuj kluczy API, sekretów ani danych uwierzytelniających w kodzie JavaScript frontendu, nawet po obfuskacji.

Obfuskacja zwiększa wysiłek potrzebny do zrozumienia i modyfikacji kodu, ale nie jest szyfrowaniem i nie gwarantuje, że inżynieria wsteczna jest niemożliwa. Środowisko uruchomieniowe pozostaje obserwowalne w środowisku kontrolowanym przez atakującego, więc zdeterminowany atakujący zawsze może wydobyć dane z kodu działającego po stronie klienta. Sekrety i wiążące decyzje dotyczące bezpieczeństwa trzymaj na serwerze.

W praktyce:

  • Przechowuj sekrety na serwerze backendu
  • Używaj zmiennych środowiskowych po stronie serwera
  • Przekazuj wywołania API przez swój backend, aby ukryć klucze
  • Używaj krótkotrwałych tokenów wydawanych przez Twój serwer

Co warto chronić?

Obfuskacja VM sprawdza się idealnie w przypadku:

  • Autorskich algorytmów i logiki biznesowej
  • Kodu weryfikacji licencji (kontroli po stronie klienta)
  • Zabezpieczeń przed manipulacją i kontroli integralności
  • Logiki gier i mechanizmów anti-cheat
  • Implementacji funkcji premium
  • Logiki wyliczania cen

Build i wydanie

Obfuskuj skompilowany i zbundlowany wynik jako ostatni krok builda; pipeline builda opisuje strona Zgodność środowiska. Zmierz koszt wybranego presetu na własnym kodzie, jak opisano w Wybór presetów. Uruchom testy funkcjonalne na buildzie testowym, a następnie zweryfikuj osobny artefakt wydania, który faktycznie publikujesz, jak opisano w Testy i CI.