JS
JS-obfuskerare
Obfuskera JavaScript så att det blir svårt att läsa.
Om JavaScript-obfuskering
Obfuskering skriver om JavaScript så att det fortfarande fungerar exakt likadant, men blir betydligt svårare för en människa att läsa — variabler får meningslösa namn, strängliteraler delas upp och kodas, och kodens normala flöde leds via extra omvägar. Till skillnad från minifiering är målet inte en mindre fil utan en förvirrande en.
De tre nivåerna byter obfuskeringsstyrka mot utdatastorlek och körningskostnad. Låg byter namn på identifierare och flyttar strängliteraler till en array; medel lägger till kontrollflödesutplattning (att omstrukturera enkel logik till en svårare tillstandsmaskin att följa) och injicering av död kod; hög lägger till RC4-kodade strängar, delar upp strängliteraler i bitar och aktiverar självförsvarande kod som går sönder om utdata omformateras eller körs genom en förskönare. Högre nivåer ger märkbart större filer och långsammare körning, så spara hög för kod som verkligen är värd kostnaden, som en licenskontroll, snarare än en hel applikation.
Var du stöter på det
- Göra klientlogik svårare att kopiera eller baklängeskonstruera
- Skydda licenskontroller eller API-nycklar inbäddade i frontend-kod
- Leverera ett paket utan att avslöja interna funktions- och variabelnamn
- Höja kostnaden för att manipulera kod som körs i en opålitlig miljö
Vanliga frågor
Är obfuskerad kod faktiskt säker?
Nej. Obfuskering ökar ansträngningen som krävs för att läsa eller ändra kod, men allt som körs i webbläsaren kan i slutändan avobfuskeras av en beslutsam person. Förlita dig aldrig på det för att skydda riktiga hemligheter som privata API-nycklar.
Vad är skillnaden mellan att obfuskera och minifiera?
Minifiering minskar filstorleken men är fortfarande lätt att vända tillbaka med en beautifier. Obfuskering gör logiken medvetet förvirrande — omdöpta identifierare, kodade strängar, omstrukturerat kontrollflöde — även efter omformatering.
Kommer obfuskering att göra min kod långsammare?
Något, särskilt på högre nivåer — extra omvägar och avkodning av strängar lägger till en liten körtidskostnad. För det mesta av frontend-koden är detta försumbart; för prestandakritiska loopar är det värt att testa.
Vad ändrar nivåerna låg, medel och hög konkret?
Låg byter namn på variabler och funktioner till korta betydelselösa namn och gömmer strängliteraler i en array. Medel lägger till kontrollflödesutplattning — att omstrukturera din logiks grenar till en svårare tillstandsmaskin att följa — plus injicerad död kod som inte gör något annat än lägger till brus. Hög lägger till RC4-kodade strängar, delar literaler i bitar som återmonteras vid körning, och självförsvarande kod som upptäcker och reagerar på omformatering. Varje nivå högre kostar mer utdatastorlek och en långsammare körning i utbyte mot mer ansträngning att vända tillbaka.