Frage

Ich weiß, dass es unmöglich ist, den Quellcode auszublenden, aber wenn ich beispielsweise eine JavaScript -Datei von meinem CDN mit einer Webseite verknüpfen muss und nicht möchte, dass die Leute den Ort und/oder den Inhalt dieses Skripts kennen, ist dies dies möglich?

Um beispielsweise ein Skript von einer Website zu verknüpfen, verwenden wir:

<script type="text/javascript" src="http://somedomain.com/scriptxyz.js">
</script>

Ist jetzt möglich, sich vor dem Benutzer zu verbergen, woher das Skript stammt, oder den Skriptinhalt auszublenden und dennoch auf einer Webseite zu verwenden?

Wenn Sie es beispielsweise in meinem privaten CDN speichern, das Passwort zum Zugriff auf Dateien benötigt, würde das funktionieren? Wenn nicht, was würde es tun, um das zu bekommen, was ich will?

War es hilfreich?

Lösung

Gute Frage mit einer einfachen Antwort: du kannst nicht!

JavaScript ist eine clientseitige Programmiersprache, daher funktioniert es auf der Maschine des Kunden, sodass Sie nichts vor dem Client verbergen können.
Es ist eine gute Lösung, Ihren Code zu verschleiern, aber es reicht nicht aus, denn obwohl es schwierig ist, könnte jemand Ihren Code entschlüsseln und Ihr Skript "stehlen".
Es gibt einige Möglichkeiten, Ihren Code schwer gestohlen zu werden, aber wie ich sagte, ist nichts kugelsicher.

Oben auf meinem Kopf ist eine Idee, den Zugriff auf Ihre externen JS -Dateien von außerhalb der Seite, in die Sie Ihren Code einzubetten, einschränken. In diesem Fall, wenn Sie haben

<script type="text/javascript" src="myJs.js"></script>

und jemand versucht auf die zugreifen myjs.js Datei In Browser sollte ihm keinen Zugriff auf die Skriptquelle erteilt werden.
Wenn Ihre Seite beispielsweise in PHP geschrieben ist, können Sie das Skript über die einfügen include Funktion und lassen Sie das Skript entscheiden, ob es ist sicher"Um seine Quelle zurückzugeben.
In diesem Beispiel benötigen Sie die externe "JS" (in PHP) Datei myjs.php :

<?php
    $URL = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
    if ($URL != "my-domain.com/my-page.php")
    die("/\*sry, no acces rights\*/");
?>
// your obfuscated script goes here

Das würde in Ihrer Hauptseite enthalten sein my-Page.php :

<script type="text/javascript">
    <?php include "myJs.php"; ?>;
</script> 

Auf diese Weise konnte nur der Browser den Inhalt der JS -Datei sehen.

Eine weitere interessante Idee ist, dass Sie am Ende Ihres Skripts den Inhalt Ihres DOM -Skriptelements löschen, sodass der Code nach dem Bewertungen des Browsers Ihren Code verschwindet:

<script id="erasable" type="text/javascript">
    //your code goes here
    document.getElementById('erasable').innerHTML = "";
</script>

Dies sind alles nur einfache Hacks, die dies nicht können, und ich kann das nicht genug betonen: Sie können Ihren JS -Code nicht vollständig schützen, aber sie können sicher jemanden verärgern, der versucht, Ihren Code zu "stehlen".

Aktualisieren:

Ich bin kürzlich auf Ein sehr interessanter Artikel geschrieben von Patrick Weid So verbergen Sie Ihren JS -Code, und er zeigt einen anderen Ansatz: Sie können Ihren Quellcode in ein Bild codieren! Sicher, das ist auch nicht kugelsicher, aber es ist ein anderer Zaun dass Sie um Ihren Code bauen können.
Die Idee hinter diesem Ansatz ist, dass die meisten Browser das Canvas -Element verwenden können, um Pixel -Manipulation auf Bildern durchzuführen. Und da das Leinwandpixel durch 4 Werte (RGBA) dargestellt wird, kann jedes Pixel einen Wert im Bereich von 0-255 haben. Das bedeutet, dass Sie in jedem Pixel einen Charakter (tatsächlicher ISCII -Code) speichern können. Der Rest der Codierung/Dekodierung ist trivial.
Danke, Patrick!

Andere Tipps

Das einzige, was Sie tun können, ist verschleiern Ihr Code, um es schwieriger zu lesen. Egal was Sie tun, wenn Sie möchten, dass das JavaScript in seinem Browser ausgeführt wird, müssen sie den Code haben.

Lesen Sie dies. Es hat eine sehr schöne Möglichkeit, Ihren Code sowohl im Quell- als auch im Debugging -Tool wie Firebug zu verbergen.

Meines Wissens ist dies nicht möglich.

Ihr Browser muss Zugriff auf JS -Dateien haben, um sie auszuführen. Wenn der Browser Zugriff hat, hat der Browser -Benutzer auch Zugriff.

Wenn Ihr Passwort Ihre JS -Dateien schützt, kann der Browser nicht auf sie zugreifen und den Zweck des JS -Zeitpunkts besiegen.

Ganz oben auf meinem Kopf könnten Sie so etwas tun (wenn Sie serverseitige Skripte erstellen können, wie es sich anhört):

Anstatt das Skript wie gewohnt zu laden, senden Sie eine AJAX -Anfrage an eine PHP -Seite (es könnte alles sein; ich benutze sie einfach selbst). Lassen Sie den PHP die Datei (möglicherweise auf einem nicht öffentlichen Teil des Servers) finden, öffnen Sie sie mit file_get_contents, und kehren Sie zurück (lesen Sie: echo) Der Inhalt als Zeichenfolge.

Wenn diese Zeichenfolge zum JavaScript zurückkehrt, lassen Sie sie ein neues erstellen script Tag, bevölkern, seine innerHTML Mit dem gerade erhaltenen Code, den Sie gerade erhalten haben, und das Tag an die Seite anhängen. (Du könnte haben Probleme damit; innerHTML Vielleicht ist nicht das, was Sie brauchen, aber Sie können experimentieren.)

Wenn Sie dies viel tun, möchten Sie möglicherweise sogar eine PHP -Seite einrichten, die eine GET -Variable mit dem Namen des Skripts akzeptiert, damit Sie mit demselben PHP verschiedene Skripte dynamisch schnappen können. (Vielleicht könnten Sie stattdessen Post verwenden, um es für andere Leute ein wenig schwieriger zu machen, zu sehen, was Sie tun. Ich weiß es nicht.)

BEARBEITEN: Ich dachte du versuchst nur, das zu verbergen Lage des Skripts. Dies würde offensichtlich nicht viel helfen, wenn Sie versuchen, das Skript selbst zu verbergen.

Vergessen Sie es, das ist nicht machbar.

Egal was Sie versuchen, es wird nicht funktionieren. Alles, was ein Benutzer tun muss, um Ihren Code zu entdecken, und es ist der Standort, in der Registerkarte Netz in der Registerkarte "zu suchen" Firebug oder verwenden Geiger Um zu sehen, welche Anfragen gestellt werden.

Google Closure Compiler, Yui -Kompressor, Minifieren, /Packer/... usw. sind Optionen zum Komprimieren/Verschleiern Ihrer JS -Codes. Aber keiner von ihnen kann Ihnen helfen, Ihren Code vor den Benutzern zu verbergen.

Jeder mit anständigem Wissen kann Ihren Code mit Tools wie leicht dekodieren/de-oBfuscieren JS -Verschönerer. Sie nennen es.

Die Antwort lautet also, dass Sie Ihren Code immer schwerer zu lesen/dekodieren können, aber sicher gibt es keine Möglichkeit, sich zu verbergen.

Ich denke, der einzige Weg besteht darin, die erforderlichen Daten auf den Server zu setzen und nur angemeldete Benutzer nach Bedarf auf die Daten zugreifen zu können (Sie können auch einige Berechnungs-Server-Seite erstellen). Dies schützt Ihren JavaScript -Code nicht, macht ihn jedoch ohne den Server -Nebencode nicht operatierbar

Wie ich in dem Kommentar sagte, ich habe vorher auf Gion_13 gegangen (bitte lesen), können Sie es wirklich nicht. Nicht mit JavaScript.

Wenn Sie nicht möchten, dass der Code clientseitig verfügbar ist (= ohne große Anstrengungen stiehbar), wäre mein Vorschlag, PHP (ASP, Python, Perl, Ruby, JSP + Java-Service) zu verwenden, der verarbeitet wird, der Server verarbeitet wird -SIDE und nur die Ergebnisse der Berechnungs-/Codeausführung werden dem Benutzer zugestellt. Oder, wenn Sie es bevorzugen, sogar einen Flash oder ein Java-Antrag, die die clientseitige Berechnung/Codeausführung zulassen, aber kompiliert und daher schwerer zu unterbinden (nicht unmöglich).

Nur meine 2 Cent.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top