webentwicklung-frage-antwort-db.com.de

Wie verstecke ich Javascript-Code auf einer Webseite?

Ist es möglich, den Javascript-Code vor dem HTML-Code einer Webseite zu verbergen, wenn der Quellcode über die View Source-Funktion des Browsers angezeigt wird?

Ich weiß, dass es möglich ist, den Code zu verschleiern, aber ich würde es vorziehen, wenn er versteckt aus der Quelltext-Ansichtsfunktion ist.

80
arun nair

Ich bin mir nicht sicher, ob jemand anderes Ihre Frage direkt beantwortet hat, nämlich den Code, der mit dem Befehl Quelltext anzeigen des Browsers angezeigt wird.

Wie bereits erwähnt, gibt es keine Möglichkeit, Javascript, das in einem Browser ausgeführt werden soll, vor einem bestimmten Betrachter zu schützen. Wenn der Browser es ausführen kann, kann jede bestimmte Person es auch anzeigen/ausführen.

Wenn Sie jedoch Ihr Javascript in eine externe Javascript-Datei einfügen, die enthalten ist in:

<script type="text/javascript" src="http://mydomain.com/xxxx.js"></script>

tags, dann wird der JavaScript-Code mit dem Befehl Quelltext anzeigen nicht sofort angezeigt - nur das Skript-Tag selbst wird auf diese Weise angezeigt. Das bedeutet nicht, dass jemand diese externe Javascript-Datei nicht laden kann, um sie anzuzeigen, aber Sie haben gefragt, wie Sie sie aus dem Quelltext-Ansicht-Befehl des Browsers heraushalten können, und dies wird es tun.

Wenn Sie das Anzeigen der Quelle wirklich effizienter gestalten möchten, gehen Sie folgendermaßen vor:

  1. Legen Sie es in eine externe .js-Datei.
  2. Verschleiern Sie die Datei so, dass die meisten nativen Variablennamen durch Kurzversionen ersetzt werden, sodass alle nicht benötigten Leerzeichen entfernt werden und sie nicht ohne weitere Verarbeitung usw. gelesen werden können.
  3. Fügen Sie die .js-Datei dynamisch hinzu, indem Sie Skript-Tags programmgesteuert hinzufügen (wie dies bei Google Analytics der Fall ist). Dadurch wird es noch schwieriger, über den Befehl "Quellcode anzeigen" zum Quellcode zu gelangen, da es keinen einfachen Link gibt, auf den Sie dort klicken können.
  4. Platzieren Sie so viel interessante Logik, die Sie schützen möchten, auf dem Server, den Sie über Ajax-Aufrufe abrufen, anstatt eine lokale Verarbeitung durchzuführen.

Trotzdem sollten Sie sich auf Leistung, Zuverlässigkeit und die Optimierung Ihrer App konzentrieren. Wenn Sie einen Algorithmus unbedingt schützen müssen, legen Sie ihn auf den Server. Ansonsten können Sie sich gegen die Besten durchsetzen, ohne Geheimnisse zu haben. So funktioniert der Erfolg letztendlich im Web.

113
jfriend00

Nein, das ist nicht möglich.

Wenn Sie es dem Browser nicht geben, hat der Browser es nicht.

In diesem Fall ist es (oder ein leicht zu befolgender Verweis darauf) Teil der Quelle.

35
Quentin

Use Html Encrypter Der Teil des Kopfes, der hat

<link rel="stylesheet" href="styles/css.css" type="text/css" media="screen" />
<script type="text/javascript" src="script/js.js" language="javascript"></script>

copy and paste it to HTML Encrypter and the Result will goes like this
and paste it the location where you cut the above sample

<Script Language='Javascript'>
<!-- HTML Encryption provided by iWEBTOOL.com -->
<!--
document.write(unescape('%3C%6C%69%6E%6B%20%72%65%6C%3D%22%73%74%79%6C%65%73%68%65%65%74%22%20%68%72%65%66%3D%22%73%74%79%6C%65%73%2F%63%73%73%2E%63%73%73%22%20%74%79%70%65%3D%22%74%65%78%74%2F%63%73%73%22%20%6D%65%64%69%61%3D%22%73%63%72%65%65%6E%22%20%2F%3E%0A%3C%73%63%72%69%70%74%20%74%79%70%65%3D%22%74%65%78%74%2F%6A%61%76%61%73%63%72%69%70%74%22%20%73%72%63%3D%22%73%63%72%69%70%74%2F%6A%73%2E%6A%73%22%20%6C%61%6E%67%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%22%3E%3C%2F%73%63%72%69%70%74%3E%0A'));
//-->

HTML ENCRYPTER Hinweis: Wenn Sie ein Java auf Ihrer Seite haben, versuchen Sie, es in eine .js-Datei zu exportieren und machen Sie es wie im obigen Beispiel.

Und auch dieser Encrypter funktioniert nicht immer in jedem Code, der Ihre Website durcheinander bringt ... Wählen Sie den besten Teil aus, den Sie ausblenden möchten, wie zum Beispiel in <form> </form>

Dies kann vom fortgeschrittenen Benutzer rückgängig gemacht werden, aber nicht alle Neulinge, wie ich es kenne.

Hoffe das wird helfen

13
HINAYUPAKS

Meine Lösung ist vom letzten Kommentar inspiriert. Dies ist der Code von invisible.html

<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script type="text/javascript" src="invisible_debut.js" ></script>
<body>
</body>

Der eindeutige Code von invisible_debut.js lautet:

$(document).ready(function () {
var ga = document.createElement("script"); //ga is to remember Google Analytics ;-)
ga.type = 'text/javascript';
ga.src = 'invisible.js';
ga.id = 'invisible';
document.body.appendChild(ga);
$('#invisible').remove();});

Beachten Sie, dass ich am Ende das erstellte Skript entferne. invisible.js ist:

$(document).ready(function(){
    alert('try to find in the source the js script which did this alert!');
    document.write('It disappeared, my dear!');});

invisible.js wird nicht in der Konsole angezeigt, da es entfernt wurde und niemals im Quellcode, weil es mit Javascript erstellt wurde.

In Bezug auf invisible_debut.js habe ich es verschleiert, was bedeutet, dass es sehr kompliziert ist, die URL von invisible.js zu finden. Nicht perfekt, aber genug für einen normalen Hacker.

11
Armand Arapian

'Ist nicht möglich!'

Oh ja ist es ....

//------------------------------
function unloadJS(scriptName) {
  var head = document.getElementsByTagName('head').item(0);
  var js = document.getElementById(scriptName);
  js.parentNode.removeChild(js);
}


//----------------------
function unloadAllJS() {
  var jsArray = new Array();
  jsArray = document.getElementsByTagName('script');
  for (i = 0; i < jsArray.length; i++){
    if (jsArray[i].id){
      unloadJS(jsArray[i].id)
    }else{
      jsArray[i].parentNode.removeChild(jsArray[i]);
    }
  }      
}
7
Addinall

Ich bin nicht sicher, ob es einen Weg gibt, diese Informationen zu verbergen. Unabhängig davon, was Sie tun, um zu verschleiern oder zu verbergen, was Sie in JavaScript tun, kommt es immer noch darauf an, dass Ihr Browser es laden muss, um es verwenden zu können. Moderne Browser verfügen standardmäßig über Tools zum Debuggen und Analysieren von Webinhalten, mit denen das Extrahieren und Anzeigen von Skripten trivial ist (nur Treffer) F12 in Chrome zum Beispiel).

Wenn Sie Bedenken haben, ein Geschäftsgeheimnis oder einen Algorithmus preiszugeben, können Sie diese Logik nur in einen Webservice-Aufruf einbetten und Ihre Seite diese Funktionalität über AJAX aufrufen lassen.

7
Mark Carpenter

Ich glaube, ich habe eine Lösung gefunden, um bestimmte JavaScript-Codes in der Ansichtsquelle des Browsers auszublenden. Dafür müssen Sie jedoch jQuery verwenden.

Beispielsweise:

In deiner index.php

<head>
<script language = 'javascript' src = 'jquery.js'></script>
<script language = 'javascript' src = 'js.js'></script>
</head>

<body>
<a href = "javascript:void(null)" onclick = "loaddiv()">Click me.</a>

<div id = "content">
</div>

</body>

Sie laden eine Datei in den HTML/PHP-Body, der von einer jquery-Funktion in der js.js-Datei aufgerufen wird.

js.js

function loaddiv()
{$('#content').load('content.php');}

Hier ist der Trick.

Fügen Sie in Ihre content.php-Datei ein anderes head-Tag ein und rufen Sie von dort aus eine andere js-Datei auf.

content.php

<head>
<script language = 'javascript' src = 'js2.js'></script>
</head>

<a href = "javascript:void(null)" onclick = "loaddiv2()">Click me too.</a>

<div id = "content2">
</div>

erstellen Sie in der Datei js2.js eine beliebige Funktion.

beispiel:

js2.js

function loaddiv2()
{$('#content2').load('content2.php');}

content2.php

<?php
echo "Test 2";
?>

Bitte folgen Sie dem Link, kopieren Sie ihn und fügen Sie ihn in den Dateinamen von jquery.js ein

http://dl.dropbox.com/u/36557803/jquery.js

Ich hoffe das hilft.

5
Jepp

Du könntest benutzen document.write.

Ohne jQuery

<!DOCTYPE html>
<html>
<head><meta charset=utf-8></head>
<body onload="document.write('<!doctype html><html><head><meta charset=utf-8></head><body><p>You cannot find this in the page source. (Your page needs to be in this document.write argument.)</p></body></html>');">
</body></html>

oder mit jQuery

$(function () {
  document.write("<!doctype html><html><head><meta charset=utf-8></head><body><p>You cannot find this in the page source. (Your page needs to be in this document.write argument.)</p></body></html>")
});
4
Blue Sheep

Ist nicht möglich!

Die einzige Möglichkeit besteht darin, Javascript zu verschleiern oder Ihr Javascript zu minimieren, was es dem Endbenutzer schwer macht, ein Reverse Engineering durchzuführen. Ein Reverse Engineering ist jedoch nicht unmöglich.

1