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
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
Kies technieken
Stringcodering (hex / base64), identifiers verhaspelen, control-flow-flattening, injectie van dode code, zelfverdedigende wrapper.
-
3
Kies het doelprofiel
Browser (ES5-veilig, geen Node-API's), Node.js (staat `require`, `Buffer` toe), of laag (voornamelijk minificeren).
-
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
Webpack-configuratiegenerator
Maak een webpack.config.js voor webpack 5 voor gewoon JavaScript, React of Vue: TypeScript, Babel, CSS of Sass, afbeeldingen, HtmlWebpackPlugin, een devserver en de npm install-regel.
Telefoonnummers controleren
Controleer de structuur van telefoonnummers per land en bekijk regio, type en E.164-, internationale, nationale en RFC 3966-notatie.
SVG-golfgenerator
Genereer een vloeiende SVG-golfscheiding voor headers en footers met instelbare amplitude, frequentie, kleur en positie boven of onder. Kopieer de SVG-code.
Decimaal naar hexadecimaal converter
Voer een decimaal geheel getal in en ontvang direct de hexadecimale waarde, inclusief negatieve waarden als 64-bits tweecomplement.
ASCII-tabelreferentie
Volledige ASCII-tabel van 0 tot 127 met decimale, hexadecimale, octale en binaire waarden en HTML-numerieke referentienotatie, inclusief control codes zoals NUL, LF en DEL.
Protocol Buffers-decoder
Decodeer Protobuf-bytes lokaal uit hex, Base64, Base64URL, tekst of een bestand, bekijk veldinterpretaties en exporteer een privérapport.
Tool beschikbaar in andere talen
- مُبهِّم JavaScript [AR]
- JavaScript-Obfuscator [DE]
- JavaScript難読化ツール [JA]
- Obfuskator JavaScript [PL]
- Obfuscator JavaScript [ID]
- Ofuscador de JavaScript [ES]
- Obfuscateur JavaScript [FR]
- Ofuscador de JavaScript [PT]
- Trình làm rối mã JavaScript [VI]
- เครื่องมือปิดบังโค้ด JavaScript [TH]
- JavaScript-obfuskerare [SV]
- JavaScript 난독화 도구 [KO]
- JavaScript Obfuscator [EN]
- Offuscatore JavaScript [IT]
- Обфускатор JavaScript [RU]
- JavaScript Kod Gizleme Aracı [TR]
- JavaScript混淆器 [ZH]