JS
JS-Verschleierer
JavaScript verschleiern, damit es schwer lesbar wird.
Über JavaScript-Verschleierung
Verschleierung schreibt JavaScript so um, dass es weiterhin genau gleich funktioniert, aber für Menschen deutlich schwerer zu lesen ist — Variablen werden in bedeutungslose Zeichenketten umbenannt, Zeichenfolgen aufgeteilt und kodiert, und der normale Ablauf des Codes wird über zusätzliche Umwege geleitet. Anders als beim Minimieren ist das Ziel nicht eine kleinere Datei, sondern eine verwirrende.
Die drei Stufen tauschen Obfuskationsstärke gegen Ausgabegröße und Laufzeitkosten. Niedrig benennt Bezeichner um und verschiebt Zeichenketten-Literale in ein Array; Mittel fügt Control-Flow-Flattening hinzu (das Umstrukturieren einfacher Logik in eine schwerer nachvollziehbare Zustandsmaschine) sowie eingeschleusten toten Code; Hoch fügt RC4-kodierte Zeichenketten hinzu, teilt Zeichenketten-Literale in Blöcke auf und aktiviert selbstverteidigenden Code, der bricht, falls die Ausgabe umformatiert oder durch einen Verschönerer geschickt wird. Höhere Stufen erzeugen spürbar größere Dateien und langsamere Ausführung — heben Sie Hoch also für Code auf, der den Aufwand wirklich wert ist, etwa eine Lizenzprüfung, statt für eine ganze Anwendung.
Wo Sie darauf treffen
- Client-seitige Logik schwerer kopierbar oder nachvollziehbar machen
- Lizenzprüfungen oder API-Schlüssel schützen, die im Frontend-Code eingebettet sind
- Ein Bundle ausliefern, ohne interne Funktions- und Variablennamen offenzulegen
- Den Aufwand für Manipulationen an Code erhöhen, der in einer nicht vertrauenswürdigen Umgebung läuft
Häufige Fragen
Ist verschleierter Code tatsächlich sicher?
Nein. Verschleierung erhöht den Aufwand, Code zu lesen oder zu verändern, aber alles, was im Browser läuft, kann von einer entschlossenen Person letztlich entschleiert werden. Verlassen Sie sich niemals darauf, um echte Geheimnisse wie private API-Schlüssel zu schützen.
Was ist der Unterschied zwischen Verschleierung und Minimierung?
Minimieren verkleinert die Dateigröße, bleibt aber mit einem Beautifier leicht rückgängig zu machen. Verschleierung macht die Logik absichtlich verwirrend — umbenannte Bezeichner, kodierte Zeichenketten, umstrukturierter Kontrollfluss — auch nach einer Neuformatierung.
Wird mein Code dadurch langsamer?
Geringfügig, besonders bei höheren Stufen — zusätzliche Umwege und das Dekodieren von Zeichenketten kosten etwas Laufzeit. Für die meisten Frontend-Codes ist das vernachlässigbar; bei leistungskritischen Schleifen lohnt sich ein Test.
Was ändern die Stufen Niedrig, Mittel und Hoch konkret?
Niedrig benennt Variablen und Funktionen in kurze bedeutungslose Namen um und versteckt Zeichenketten-Literale in einem Array. Mittel fügt Control-Flow-Flattening hinzu — das Umstrukturieren der Verzweigungen Ihrer Logik in eine schwerer nachvollziehbare Zustandsmaschine — sowie eingeschleusten toten Code, der nichts tut außer Rauschen zu erzeugen. Hoch fügt RC4-kodierte Zeichenketten hinzu, teilt Literale in zur Laufzeit wieder zusammengesetzte Blöcke auf und fügt selbstverteidigenden Code hinzu, der eine Umformatierung erkennt und darauf reagiert. Jede Stufe höher kostet mehr Ausgabegröße und eine langsamere Laufzeit im Austausch für mehr Aufwand bei der Rückverwandlung.