JS
JS Obfuscator
Obfusceer JavaScript zodat het moeilijk te lezen is.
Over JavaScript-obfuscatie
Obfuscatie herschrijft JavaScript zodat het exact hetzelfde blijft werken, maar veel moeilijker te lezen is voor een mens — variabelen worden hernoemd naar betekenisloze tekenreeksen, stringliterals worden opgesplitst en gecodeerd, en de normale uitvoeringsstroom van de code wordt via extra omwegen geleid. In tegenstelling tot minimaliseren is het doel niet een kleiner bestand, maar een verwarrend bestand.
De drie niveaus wisselen obfuscatiesterkte in tegen uitvoergrootte en runtime-kosten. Laag hernoemt identifiers en verplaatst stringliterals naar een array; gemiddeld voegt control-flow-flattening toe (het herstructureren van eenvoudige logica tot een moeilijker te volgen toestandsmachine) en injectie van dode code; hoog voegt RC4-gecodeerde strings toe, splitst stringliterals in stukken en schakelt zelfverdedigende code in die breekt als de uitvoer wordt geherformatteerd of door een verfraaier gehaald. Hogere niveaus leveren merkbaar grotere bestanden en tragere uitvoering op, dus bewaar hoog voor code die de kosten daadwerkelijk waard is, zoals een licentiecontrole, in plaats van een hele applicatie.
Waar je het tegenkomt
- Clientlogica moeilijker te kopiëren of te reverse-engineeren maken
- Licentiecontroles of API-sleutels beschermen die zijn ingebed in front-end-code
- Een bundel uitleveren zonder interne functie- en variabelenamen te onthullen
- De drempel verhogen voor het manipuleren van code die in een niet-vertrouwde omgeving draait
Veelgestelde vragen
Is geobfusceerde code echt veilig?
Nee. Obfuscatie verhoogt de moeite die nodig is om code te lezen of aan te passen, maar alles wat in de browser draait, kan uiteindelijk door een vastberaden persoon worden gedeobfusceerd. Vertrouw er nooit op om echte geheimen zoals privé-API-sleutels te beschermen.
Wat is het verschil tussen obfusceren en minimaliseren?
Minimaliseren verkleint de bestandsgrootte, maar blijft eenvoudig terug te draaien met een beautifier. Obfuscatie maakt de logica bewust verwarrend — hernoemde identifiers, gecodeerde strings, herstructureerde controlestroom — zelfs na herformattering.
Maakt obfuscatie mijn code trager?
Licht, vooral bij hogere niveaus — extra omwegen en het decoderen van strings voegen een kleine runtime-kost toe. Voor de meeste front-end-code is dit verwaarloosbaar; voor prestatiekritische lussen is het de moeite waard om te testen.
Wat veranderen de niveaus laag, gemiddeld en hoog precies?
Laag hernoemt variabelen en functies naar korte betekenisloze namen en verbergt stringliterals in een array. Gemiddeld voegt control-flow-flattening toe — het herstructureren van de vertakkingen van je logica tot een moeilijker te volgen toestandsmachine — plus geïnjecteerde dode code die niets doet behalve ruis toevoegen. Hoog voegt RC4-gecodeerde strings toe, splitst literals in stukken die tijdens runtime weer worden samengevoegd, en zelfverdedigende code die reformattering detecteert en erop reageert. Elk niveau hoger kost meer uitvoergrootte en een tragere runtime in ruil voor meer moeite om terug te draaien.