Frage von perhp, 42

Javascript Obfuscator?

Kennt sich jemand damit aus und kann mir folgende Fragen beantworten? Wie wird das ganze bei einem Projekt eingebunden, ist das nur eine JS-Datei, die dann alles encrypted bevor es angezeigt wird? Wenn ich das dann verwende, wird dann die Seite langsamer, da der Browser wieder anders interpretieren muss usw?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von ceevee, 31

Wie wird das ganze bei einem Projekt eingebunden, ist das nur eine JS-Datei, die dann alles encrypted bevor es angezeigt wird?

Dazu müsste man jetzt deine Bauumgebung (grunt / gulp ?) und den Obfuscator kennen, den du verwenden willst. Normalerweise bindet man dann im HTML nur die verschlüsselte JS-Datei ein, die der Obfuscator erzeugt.

Wenn ich das dann verwende, wird dann die Seite langsamer, da der Browser wieder anders interpretieren muss usw?

Durch eine kleinere Javascript-Datei wird diese schneller geladen, dem Browser ist es egal, ob da jetzt beispielsweise Leerzeilen in deinem Code sind. Ob das Javascript schneller ist, kommt jetzt auf den Obfuscator konkret an, wenn der beispielsweise in Massen eval() einsetzt, dann geht auch die Performance runter.

Kommentar von perhp ,

Also für SCSS verwende ich wahrscheinlich grunt, beim JS-Code bin ich mir nicht sicher, da ich zum minifen eine Extension benutze.

Wenn ich dann nur die verschlüsselte Datei einbinde, dann müsste ich ja die Datei doppelt auf dem Server lagern (einmal die verschlüsselte und die normale), da beim eventuellen Überarbeiten der Datei, die Datei neu verschlüsselt werden muss und danach mit dieser ausgetauscht oder?

Hätte jetzt nur vor eine Datei zu verschlüsselt, da dort sensible Daten vorhanden sind.

Kommentar von ceevee ,

Gerade wenn die Datei sensible Daten enthält, dann würde ich nur die verschlüsselte Version hochladen, wenn die sich ändert, dann überschreibst du die halt. Die URL der unverschlüsselten Datei könnte man erraten oder systematisch suchen und dann hätte man den Klartext.

Bei sensiblen Daten solltest du eher überlegen, ob der Inhalt der Datei im Backend (PHP, Pyhton/Django, node.js, ...) nicht besser aufgehoben wäre.

Antwort
von nikolaiki, 13

Ein obfuscator macht eine Datei schwer lesbar indem Kommentare und Leerzeichen entfernt werden. Ausserdem werden Variablennamen vom Klartext in sinnlose Kürzel verwandelt. Ergo: wie der Name schon sagt; der Inhalt wird verschleiert. Das ist ganz gut aber nicht 100%ig. Positiver Nebeneffekt:: Die Datei wird kleiner und kann schneller geladen werden. 

Typische Beispiele: Minify, closure, uglify

Verschlüsselung ist qualitativ auf einer anderen Ebene angesiedelt und praktisch im Zusammenhang mit html//css/js Content nicht realisierbar, da der Inhalt auf dem Client interpretiert werden muss. Sensible Daten sollten -wie von ceevee  bereits erwaähnt- auf den Server ausgelagert werden. 

Kommentar von perhp ,

Danke für die Antwort. Das ist mir bewusst, dass dies besser wäre, doch in meinen Fall leider sinnlos aus gewissen Gründen, die ich gerade nicht erläutern möchte...

Habe es schon ausprobiert und es ist besser als gar nichts, um die Datei zumindestens ein bisschen sicherer zu machen.

Kommentar von nikolaiki ,

Die Webseite javascriptobfuscator.com hat sich auf dieses Einsatzfeld spezialisiert.

So wird z. Bsp. aus
if ('abcdef'=="an_example")
  {of_beautifier();}
else
  {var a=b?(c%d):e[f];} 

der folgende Code
var _0x2a02=["\x61\x62\x63\x64\x65\x66","\x61\x6E\x5F\x65\x78\x61\x6D\x70\x6C\x65"]; if(_0x2a02[0]== _0x2a02[1]){of_beautifier()}else {var a=b?(c% d):e[f]}

Hier wird der Code nicht komprimiert sondern absichtlich aufgebläht. Gegen Gebühr gibt es fortgeschrittene Möglichkeiten. Das sollte für die meisten Zwecke ausreichen.

Allerdings: Ein Kunde könnte die Verwendung aus Sicherheitsbedenken ablehnen, weil er die Wirkungsweise nicht kontrollieren kann. Zur Absicherung sollte man die Originaldatei aufbewahren.

Keine passende Antwort gefunden?

Fragen Sie die Community