JavaScript-obfuscator

Obfuscatie verhoogt de kosten om je JavaScript-broncode te lezen, niet absoluut (geen enkele front-end-obfuscatie is waterdicht), maar genoeg om een terloopse inspectie te ontmoedigen en geautomatiseerde scraping te vertragen. Deze tool past string-array-codering, het verhaspelen van identifiers, control-flow-flattening en optionele injectie van dode code toe, waarbij je elke optie kunt kiezen afhankelijk van hoe agressief je wilt zijn.

JavaScript obfusceren

  1. 1

    Plak de broncode

    Elke geldige JS. Als de code afhankelijk is van specifieke globale eigenschapsnamen van een hostpagina, stel die dan in als gereserveerd.

  2. 2

    Kies technieken

    Stringcodering (hex / base64), identifiers verhaspelen, control-flow-flattening, injectie van dode code, zelfverdedigende wrapper.

  3. 3

    Kies het doelprofiel

    Browser (ES5-veilig, geen Node-API's), Node.js (staat `require`, `Buffer` toe), of laag (voornamelijk minificeren).

  4. 4

    Obfusceren

    De tool geeft de getransformeerde code uit met een grootteverschil. Agressieve instellingen kunnen de uitvoer 3 tot 5 keer groter maken dan de bron.

Technieken en wat ze je kosten

Techniek Verhoogt de inspanning van de aanvaller Kosten bij uitvoering Kosten qua grootte
Variabelen hernoemen Laag Verwaarloosbaar Kleiner (bijeffect van minificatie)
String-array-codering Middel Minimaal (één lookup per string) +10–30%
Control-flow-flattening Hoog Meetbaar (~2–5%) +50–150%
Injectie van dode code Laag (schijnbeveiliging) Klein +20–50%
Zelfverdedigende wrapper Middel Eenmalige controle +5–10%
Debug-bescherming Middel (detecteert DevTools) Eenmalige controle +5%
VM / virtualisatie (premium) Zeer hoog Groot (5–20x) +300–500%

Wat obfuscatie niet kan beschermen

  • Geheimen. Elke constante in je front-end-broncode is met genoeg tijd leesbaar. API-sleutels, authenticatiegeheimen, prijslogica, vertrouw nooit op obfuscatie om die te verbergen. Verplaats ze naar de server.
  • Algoritmen met een waarneembare uitvoer. Als de browser het kan uitvoeren, kan een aanvaller met een debugger elke invoer en uitvoer waarnemen. Obfuscatie vertraagt dat; het stopt het niet.
  • Geautomatiseerde scraping op grote schaal. Anti-scraping steunt op gedragsdetectie (fingerprinting, ratelimieten, CAPTCHA), niet op obfuscatie van de broncode.

Wanneer obfuscatie de moeite waard is

  • Anti-manipulatie bij ingebedde SDK’s (licentiëring, advertentie-SDK’s, gameclients).
  • De kosten verhogen voor het moeiteloos kopiëren van een concurrerende implementatie.
  • Geautomatiseerde scriptclassificatie bemoeilijken voor breedspectrumscrapers.

Wanneer het averechts werkt

  • Je hebt al een bundler. Webpack + Terser in productiemodus minificeert en verhaspelt lokale variabelen al. Een tweede obfuscatieronde levert weinig op en blaast de bundelgrootte op.
  • Je optimaliseert voor First Paint / Core Web Vitals. Agressieve obfuscatie verdrievoudigt de bundel; dat schaadt FCP en LCP.
  • Je moet in productie debuggen. Zware obfuscatie maakt Sentry-stacktraces vrijwel nutteloos zonder een bijbehorende source map, en de source map meesturen doet de obfuscatie teniet.

Veelgemaakte fouten

  • Obfuscatie gelijkstellen aan versleuteling. Dat is het niet, het is slechts een drempel die vertraagt.
  • De source map samen met de geobfusceerde bundel naar productie sturen. Dat neutraliseert de obfuscatie volledig.
  • Bibliotheken van derden obfusceren die je al vanaf een CDN hebt geladen. Je krijgt de groottestraf zonder enige winst.

Veelgestelde vragen

Nee. Obfuscatie is een drempel, geen slot. Een vastberaden analist met een debugger herstelt de logica. Het verhoogt de kosten genoeg om terloopse inspectie en de meeste geautomatiseerde scrapers te ontmoedigen, maar het is geen beveiliging.

Als je eigenschappen dynamisch benadert (obj["field_name"], Object.keys(obj)) of afhankelijk bent van specifieke functie- of klassenamen voor de hostpagina, voeg die dan toe aan de gereserveerde lijst. Zonder dat kan het hernoemen van eigenschappen externe integraties breken.

Bewaar de originele broncode. De obfuscator is een eenrichtingstransformatie; je kunt het origineel niet exact herstellen uit de geobfusceerde uitvoer, alleen een leesbare benadering.

Lichte obfuscatie voegt ~10–30% toe. Control-flow-flattening plus string-arrays voegt 50–150% toe. De zwaarste instellingen kunnen de grootte verdrievoudigen. Controleer de teller voor de uitvoergrootte voordat je verzendt.

Gerelateerde tools

Tool beschikbaar in andere talen