DevToolPal
NL

JavaScript-obfuscator

Maak JavaScript moeilijk leesbaar door variabelen te hernoemen, strings te verbergen en logica plat te slaan, terwijl het precies hetzelfde blijft werken.

Draait lokaal, wordt nooit geüpload

Opties

Sterkte

Een hogere sterkte verbergt meer, maar maakt de code groter en trager.

Invoer

0 tekens · 0 B

Uitvoer

0 tekens · 0 B

Wat het doet

De JavaScript-obfuscator herschrijft een script zodat het nog precies hetzelfde werkt, maar voor mensen veel moeilijker te lezen en te kopiëren is. Variabele- en functienamen worden betekenisloze identifiers zoals _0x3f2a, stringliterals verhuizen naar een gecodeerde opzoektabel, en op hogere niveaus wordt de control flow door elkaar gehusseld en wordt er dode code tussengevoegd.

Het is handig voor browsergames, demo’s, widgets en licentiecontroles die je als gewoon JavaScript uitlevert en niet woord voor woord gekopieerd wilt zien.

Zo gebruik je het

  1. Plak je JavaScript of open een .js-bestand.
  2. Kies een Sterkte:
    • Laag hernoemt lokale namen en verplaatst strings naar een opzoekarray. De uitvoer blijft snel en vrij klein.
    • Gemiddeld voegt gecodeerde strings, control-flow flattening en wat dode code toe.
    • Hoog past alles op volle sterkte toe. Het resultaat kan vele malen groter en merkbaar trager zijn.
  3. Zet Globale namen hernoemen alleen aan als niets buiten het script naar de top-level functies of variabelen verwijst.
  4. Zet Uitvoer op één regel uit als je het resultaat over meerdere regels verdeeld wilt hebben.
  5. Kopieer of download de geobfusceerde code en test hem voordat je deployt.

Voorbeeld

Het voorbeeld definieert een greet-functie en een bezoekteller. Na obfuscatie op lage sterkte is de code één regel vol hexadecimale namen, en toch print hij bij uitvoeren nog steeds Hello, Ada! You have visited 1 time(s).

Obfuscatie versus minificatie

Minificatie, zoals de JavaScript- en CSS-minifier die doet, verwijdert witruimte en verkort namen om bestanden kleiner en sneller te downloaden te maken. Obfuscatie gaat qua grootte de andere kant op: het voegt bewust omwegen toe om code moeilijker te begrijpen te maken. Veel projecten minificeren alles en obfusceren alleen de paar bestanden met logica die het beschermen waard is.

Beperkingen

Obfuscatie kan geen geheimen beschermen. Alles wat de browser kan uitvoeren, kan een gebruiker uiteindelijk inspecteren, dus houd API-sleutels en bedrijfsregels die privé moeten blijven op je server. Zware instellingen maken code ook trager, dus vermijd ze in hot loops en op pagina’s waar prestaties belangrijk zijn.

Veelgestelde vragen

› Verandert obfuscatie wat mijn code doet?

Nee. Het geobfusceerde script gedraagt zich hetzelfde als het origineel; alleen de vorm verandert. Draai je tests altijd op de geobfusceerde build, want code die zijn eigen broncode of functienamen inspecteert kan zich anders gedragen.

› Kan geobfusceerde code worden teruggedraaid?

Niet volledig, maar iemand die vastberaden is en tijd heeft, kan nog steeds achterhalen wat de code doet. Zie obfuscatie als een drempel tegen simpel kopiëren, nooit als een plek om geheimen zoals API-sleutels te verstoppen.

› Wanneer zet ik Globale namen hernoemen aan?

Alleen als het script op zichzelf staat. Globale namen hernoemen breekt HTML-attributen, andere scripts of tests die je top-level functies bij naam aanroepen.

› Wordt mijn code geüpload?

Nee. Obfuscatie draait in je browser met de opensource-library javascript-obfuscator.