Best Practices
So setzen Sie Obfuskierung wirksam ein: was Sie schützen sollten, was Sie unangetastet lassen sollten und was Obfuskierung nicht für Sie leisten kann.
Empfehlungen
Obfuskieren Sie nur Ihren eigenen Code.
Wenden Sie die VM-Obfuskierung nicht auf Skripte von Drittanbietern, Bibliotheken oder Polyfills an. Diese sind bereits minifiziert, und die Obfuskierung würde sie nur verlangsamen.
Nutzen Sie den Kommentarmodus für gezielten Schutz.
Setzen Sie
vmTargetFunctionsModeauf'comment'und markieren Sie nur die sensiblen Funktionen mit/* javascript-obfuscator:vm */, statt alles zu schützen. Siehe Funktionen gezielt auswählen.Testen Sie nach der Obfuskierung gründlich.
Testen Sie obfuskierten Code immer in Ihrer Zielumgebung. Manche Optionen können Code auf subtile Weise brechen. Laufzeitabwehrmaßnahmen reagieren außerdem auf Testautomatisierung und Debugger; siehe Tests und CI.
Nehmen Sie häufig ausgeführte Pfade von der VM-Obfuskierung aus.
Verwenden Sie
vmExcludeFunctionsfür Animationsschleifen, Echtzeit-Rendering oder häufig aufgerufenen Code. Die Option erfasst nur Funktionsnamen auf oberster Ebene (unter Async Executor die äußerstenasync-Funktionen); um verschachtelten, häufig ausgeführten Code aus der VM herauszuhalten, verwenden Sie den Kommentarmodus und markieren nur die Funktionen, die Schutz brauchen.
Wichtiger Sicherheitshinweis
Speichern Sie niemals API-Schlüssel, Geheimnisse oder Zugangsdaten in Frontend-JavaScript, auch nicht mit Obfuskierung.
Obfuskierung erhöht den Aufwand, Code zu verstehen und zu verändern, ist aber keine Verschlüsselung und kann nicht garantieren, dass Reverse Engineering unmöglich ist. Die Laufzeit bleibt in einer Umgebung, die ein Angreifer kontrolliert, beobachtbar, daher kann ein entschlossener Angreifer Daten aus clientseitigem Code immer extrahieren. Behalten Sie Geheimnisse und maßgebliche Sicherheitsentscheidungen auf dem Server.
In der Praxis:
- Geheimnisse auf Ihrem Backend-Server speichern
- Umgebungsvariablen serverseitig verwenden
- API-Aufrufe über Ihr Backend leiten, um Schlüssel zu verbergen
- Kurzlebige Tokens verwenden, die Ihr Server ausstellt
Was sollten Sie schützen?
Die VM-Obfuskierung eignet sich ideal für:
- Proprietäre Algorithmen und Geschäftslogik
- Code zur Lizenzprüfung (clientseitige Prüfungen)
- Manipulationsschutz und Integritätsprüfungen
- Spiellogik und Anti-Cheat-Mechanismen
- Implementierungen von Premium-Funktionen
- Logik zur Preisberechnung
Build und Release
Obfuskieren Sie Ihre kompilierte, gebündelte Ausgabe als letzten Build-Schritt; zur Build-Pipeline siehe Laufzeitkompatibilität. Messen Sie die Kosten der gewählten Voreinstellung an Ihrem eigenen Code, wie in Voreinstellungen wählen beschrieben. Führen Sie Funktionstests mit einem Test-Build durch und validieren Sie dann das separate Release-Artefakt, das Sie tatsächlich ausliefern, wie in Tests und CI beschrieben.
