Logo David Burdelak
Słownik · Cyberbezpieczeństwo

Co to jest obfuskacja kodu?

Ostatnia aktualizacja:

Obfuskacja kodu to celowe przekształcenie kodu źródłowego tak, by był bardzo trudny do przeczytania i zrozumienia przez człowieka, ale nadal działał tak samo jak oryginał. Stosuje się ją, by utrudnić kopiowanie rozwiązań, analizę logiki aplikacji lub obejście zabezpieczeń licencyjnych. Najczęściej dotyczy kodu, który trafia do użytkownika w całości, czyli JavaScriptu w przeglądarce oraz aplikacji mobilnych i desktopowych.

Najczęstsze techniki obfuskacji

  • zmiana nazw zmiennych i funkcji na krótkie lub przypadkowe ciągi, np. _0x3fa2,
  • kodowanie tekstów, czyli ukrycie napisów, adresów i kluczy w zakodowanej tablicy odczytywanej w trakcie działania,
  • spłaszczanie przepływu sterowania, które zamienia czytelne warunki i pętle w jedną dużą instrukcję wyboru,
  • wstawianie martwego kodu, który nigdy się nie wykonuje, ale utrudnia analizę,
  • zabezpieczenia przed debugowaniem, które zmieniają działanie kodu po otwarciu narzędzi deweloperskich lub po jego sformatowaniu.

W aplikacjach na Androida podobną rolę pełni narzędzie R8, a w PHP stosuje się kodery, takie jak ionCube, które zamieniają kod w kod bajtowy.

Obfuskacja, minifikacja i szyfrowanie

Technika Cel Czy da się odwrócić?
Minifikacja mniejszy rozmiar pliku i szybsze ładowanie formatowanie łatwo przywrócić, nazwy lokalne zostają skrócone
Obfuskacja utrudnienie zrozumienia kodu częściowo, kosztem czasu i pracy
Szyfrowanie ukrycie danych przed osobami bez klucza tylko z kluczem

Kodu, który ma się wykonać w przeglądarce, nie da się zaszyfrować, bo przeglądarka musi go odczytać. Dlatego obfuskacja nigdy nie daje pełnej ochrony, tylko podnosi koszt analizy.

Czy obfuskacja jest zabezpieczeniem?

Obfuskacja nie chroni danych ani kluczy. Wszystko, co trafia do przeglądarki, łącznie z kluczami API i adresami usług, może zostać odczytane, choć z większym wysiłkiem. Prawdziwe zabezpieczenia, takie jak weryfikacja uprawnień czy limity zapytań, muszą działać na serwerze.

Obfuskacja ma też koszty: zwiększa rozmiar plików, spowalnia wykonywanie kodu i utrudnia analizę błędów zgłaszanych przez użytkowników. Ciekawostką jest to, że te same techniki stosują twórcy złośliwego oprogramowania, by ukryć działanie skryptów przed programami antywirusowymi.

Gdzie obfuskacja ma sens?

Uzasadnione zastosowania to płatne biblioteki i wtyczki sprzedawane z kodem, gry przeglądarkowe, mechanizmy wykrywania botów oraz fragmenty logiki, których skopiowanie dałoby konkurencji realną przewagę. Przy zwykłej stronie firmowej wystarcza minifikacja. Narzędzia, ustawienia i wpływ na wydajność opisuje poradnik o tym, jak zaciemnić kod JavaScript.

Zobacz w praktyce

Powiązane pojęcia

Wszystkie hasła z kategorii Cyberbezpieczeństwo