JavaScript-obfuskerare

Obfuskering ökar kostnaden för att läsa din JavaScript-källkod, inte helt (ingen frontend-obfuskering är vattentät), men tillräckligt för att avskräcka en flyktig granskning och bromsa automatiserad skrapning. Verktyget tillämpar strängmatriskodning, förvrängning av identifierare, utplattning av kontrollflöde och valfri injektion av död kod, där varje alternativ kan väljas beroende på hur aggressiv du vill vara.

Så obfuskerar du JavaScript

  1. 1

    Klistra in källkoden

    Vilken giltig JS som helst. Om den förlitar sig på specifika globala egenskapsnamn från en värdsida, ange dem som reserverade.

  2. 2

    Välj tekniker

    Strängkodning (hex / base64), förvrängning av identifierare, utplattning av kontrollflöde, injektion av död kod, självförsvarande wrapper.

  3. 3

    Välj målprofil

    Webbläsare (ES5-säker, inga Node-API:er), Node.js (tillåter `require`, `Buffer`) eller låg (mestadels minifiering).

  4. 4

    Obfuskera

    Verktyget matar ut den omvandlade koden med en storleksförändring. Aggressiva inställningar kan göra utdatan 3–5 gånger större än källan.

Tekniker och vad de kostar dig

Teknik Ökar angriparens ansträngning Kostnad vid körning Storlekskostnad
Omdöpning av variabler Låg Försumbar Mindre (bieffekt av minifiering)
Strängmatriskodning Medel Minimal (en uppslagning per sträng) +10–30%
Utplattning av kontrollflöde Hög Mätbar (~2–5%) +50–150%
Injektion av död kod Låg (skensäkerhet) Liten +20–50%
Självförsvarande wrapper Medel Engångskontroll +5–10%
Felsökningsskydd Medel (upptäcker DevTools) Engångskontroll +5%
VM / virtualisering (premium) Mycket hög Stor (5–20x) +300–500%

Vad obfuskering inte kan skydda

  • Hemligheter. Varje konstant i din frontend-källkod går att läsa med tillräckligt med tid. API-nycklar, autentiseringshemligheter, prislogik, förlita dig aldrig på obfuskering för att dölja dessa. Flytta dem till servern.
  • Algoritmer med en observerbar utdata. Om webbläsaren kan köra det kan en angripare med en felsökare observera varje in- och utdata. Obfuskering bromsar det; den stoppar det inte.
  • Automatiserad skrapning i stor skala. Skrapningsskydd bygger på beteendedetektering (fingerprinting, hastighetsgränser, CAPTCHA), inte på obfuskering av källkoden.

När obfuskering är värd det

  • Manipuleringsskydd för inbäddade SDK:er (licensiering, annons-SDK:er, spelklienter).
  • Höja kostnaden för enkel kopiering av en konkurrerande implementation.
  • Försvåra automatiserad skriptklassificering för bredspektrumskrapare.

När det är kontraproduktivt

  • Du har redan en bundlare. Webpack + Terser i produktionsläge minifierar och förvränger redan lokala variabler. Att lägga till ett andra obfuskeringssteg ger lite och blåser upp buntens storlek.
  • Du optimerar för First Paint / Core Web Vitals. Aggressiv obfuskering tredubblar bunten, vilket skadar FCP och LCP.
  • Du måste felsöka i produktion. Tung obfuskering gör Sentrys stackspårningar närmast värdelösa utan en matchande källkarta, och att skicka med källkartan omintetgör obfuskeringen.

Vanliga misstag

  • Att behandla obfuskering som likvärdig med kryptering. Det är den inte, den är bara ett gupp som fördröjer.
  • Att skicka källkartan tillsammans med den obfuskerade bunten till produktion. Det neutraliserar obfuskeringen helt.
  • Att obfuskera tredjepartsbibliotek som du redan laddat från ett CDN. Du får storleksstraffet utan någon vinst.

Vanliga frågor

Nej. Obfuskering är ett gupp, inte ett lås. En beslutsam analytiker med en felsökare återställer logiken. Den höjer kostnaden tillräckligt för att avskräcka flyktig granskning och de flesta automatiserade skrapare, men den är inte säkerhet.

Om du kommer åt egenskaper dynamiskt (obj["field_name"], Object.keys(obj)) eller förlitar dig på specifika funktions- eller klassnamn för värdsidan, lägg till dessa i den reserverade listan. Utan det kan omdöpning av egenskaper förstöra externa integrationer.

Behåll den ursprungliga källkoden. Obfuskeraren är en enkelriktad transformation; du kan inte återställa originalet exakt från den obfuskerade utdatan, bara en läsbar approximation.

Lätt obfuskering lägger till ~10–30%. Utplattning av kontrollflöde plus strängmatriser lägger till 50–150%. De tyngsta inställningarna kan tredubbla storleken. Kontrollera räknaren för utdatastorlek innan du levererar.

Relaterade verktyg

Verktyget finns på andra språk