Obfuskacja a szyfrowanie
Szyfrowanie wymaga klucza i ma chronić poufność danych. Obfuskacja utrudnia czytanie, ale nie daje poufności: użytkownik może pobrać kod, uruchomić go w DevTools i analizować jego zachowanie.
Kiedy ma sens?
- Utrudnienie kopiowania prostych fragmentów logiki biznesowej.
- Zmniejszenie czytelności kodu biblioteki dostarczanej klientowi.
- Ograniczenie prostego scrapingu, przy zachowaniu świadomości, że nie jest to pełna ochrona.
- Usunięcie logów debugowych przed publikacją, jeśli pipeline robi to bezpiecznie.
Czego nie robić
- Nie umieszczaj sekretów w JavaScripcie tylko dlatego, że kod jest obfuskowany.
- Nie używaj obfuskacji do ukrywania złośliwego kodu lub trackerów.
- Nie zakładaj, że obfuskacja zastąpi autoryzację po stronie serwera.
- Zmierz rozmiar i czas wykonania — cięższy kod może pogorszyć wydajność.
Przykład i kontrola regresji
Zmiana calculateTotal na a utrudnia odczyt nazwy, ale wejście i wynik nadal widać w runtime. Publiczna mapa źródeł może ujawnić oryginalny kod. Po transformacji porównaj kluczowe ścieżki, błędy CSP, rozmiar i czas wykonania; zachowaj prywatne mapy do diagnozowania błędów.
function calculateTotal(price, count) { return price * count; }
// ↓
function a(b, c) { return b * c; }To przekształcanie kodu JavaScript, które utrudnia szybki odczyt nazw, stringów lub przepływu programu. Kod nadal jest dostępny w przeglądarce i może być analizowany.
Hasła, prywatne klucze API i reguły autoryzacji należą na backend. Publiczne identyfikatory lub klucze publishable mogą występować w przeglądarce zgodnie z modelem dostawcy, z właściwymi ograniczeniami. Obfuskacja nie zmienia tego modelu bezpieczeństwa.
Nie. Obfuskacja dodaje tarcie do odczytu, ale nie zapewnia poufności ani nie zastępuje mechanizmów bezpieczeństwa.
Źródła i dalsza lektura
- MDN — JavaScript dokumentacja
- OWASP — Client-Side Security dokumentacja