Quelltext vom Javascript unleserlich machen?

10 Antworten

Nicht zuverlässig. Du könntst ihn beispielsweise in Form von Hex-Codes codieren (ASCII-Codes der Zeichen) und ihn im Code dann zusammenbauen. Aber auch das ist nur eine Frage des Aufwands. Und spätestens, wenn der neue Tab aufgeht, steht der Link ja ohnehin in der Adressleiste.

Nein, ist unmöglich.

Du kannst zwar deinen JS-Code versuchen zu verschleiern, wie es dir die anderen schon erklärt haben, aber im Endeffekt ist es für jeden mittelmäßigen JS-Entwickler immer noch möglich, deinen Link zu extrahieren.

Zumal man sich bloß im Inspector des Browsers die angeforderten Ressourcen anschauen muss ... es ist also völlig belanglos, wie viel Arbeit du in eine perfekte JS-Verschleierung investierst ... am Ende kann jeder den Link sowieso im Klartext sehen! Von daher ist die ganze Mühe vergebens. :)

Und selbst wenn ... im JS-Debugger kann man jede einzelne Operation nachverfolgen. Oder man baut sich eigene Code-Snippets mit console.log() an die entsprechenden Stellen ein.

Alles in allem gibt es unzählige Wege, deinen Link "auszulesen", und die sind alle nicht wirklich kompliziert. Eher im Gegenteil: Kinderkram.

Fazit: Vergiss es. Alles, was du an den Browser schickst, egal ob JS, HTML, CSS oder auch alter SWF-Kram, Fontdateien, wirklich ALLES lässt sich irgendwie reversen. Und im Gegensatz zu nativem Code ist das in jedem Falle sogar un-glaub-lich einfach, selbst für absolute Anfänger.

Also investiere deine Kraft lieber in den Aufbau deiner Seite, anstatt sie für solche nicht-funktionierenden Dinge zu vergeuden. ;)

Woher ich das weiß:Berufserfahrung

Man kann den Code zwar möglichst unleserlich machen, aber wirklich vor "Diebstahl" schützen kannst du den Code nicht.

Das ganze nennt sich obfuscating und macht den Text für Menschen schwer lesbar, aber es ist eben nicht unmöglich. Grundsätzlich ist so etwas immer ein Problem von Computerprogrammen, sobald jemand ein Programm von dir hat kann er nachvollziehen wie du Probleme gelöst hast etc. du kannst es ihm nur möglichst schwer machen.

Ein "sicherer" Schutz ist es dann eben erst sobald der Aufwand den Code zu lesen, den Nutzen überschreitet.

Üblicherweise lässt man seinen JavaScript Code mit z. B. webpack kompilieren, der alle JavaScript Dateien in eine Datei bündelt und optional den Code minfied und uglified, was bereits von regex9 bereits erwähnt worden ist.

Du kannst deinen JavaScript Code zusätzlich mit einem Obfuscator verschleiern (hier ein Beispiel: https://obfuscator.io/), welches jedoch deinen Code unnötig um ein vielfaches vergrößert.

Du musst nicht deinen JavaScript Code geheim halten, da ohnehin jeder deinen Code über die Browser DevTools debuggen kann, auch wenn du eine Debug Protection einbaust. Ich behaupte mal dass alle professionelle Entwickler die etwas mit JavaScript am Hut haben deine Funktionen nachschreiben können, ohne deinen JavaScript Code zu lesen, daher ist der ganze Aufwand den Code zu verschleiern nicht wert.

Mach dir lieber Gedanken über die Sicherheit deines Servers, da die eigentliche Business-Logik im Backend liegt, die kein anderer als du lesen kannst.

Ein sinnvoller Ansatz wäre es, JS stets via Uglifier und Minifier zu komprimieren (s. UglifyJS). Konstante Werte wie eine URL werden dadurch zwar nicht umgewandelt, aber wenn du diese via JS stückweise zusammensetzen lässt, kannst du den Sinn erneut etwas verbergen.

Um die URL gänzlich aus dem Skript zu lassen, könntest du sie via AJAX-Request vom Server anfordern. Allerdings müsste dafür wiederum gesorgt werden, dass der Server nicht jedem beliebigen Aufrufer diese Adresse ausgibt.

Sehr fraglich ist allerdings, ob so ein Aufwand überhaupt im geringsten gerechtfertigt wäre. Letztendlich wird ein Request vom Browser an einen Server eh geloggt. Schau in die Webkonsole.