Was ist JavaScript-Verschleierung und warum stellt sie eine Bedrohung dar?

Was ist JavaScript-Verschleierung und warum stellt sie eine Bedrohung dar?

AVG hat mir kürzlich mitgeteilt, dass eine Webseite blockiert wurde, weilJavaScript-Verschleierung.

Warum wurde die Webseite gesperrt und was genau bedeutet das?

Antwort1

Verschleierung ist ein Mittel, um die wahre Bedeutung und Absicht Ihres JavaScript-Codes zu „verschleiern“. Einige Websites verwenden sie als Hindernis für Personen, die ihren Code kopieren/ausleihen möchten. Andere Websites verwenden sie als Mittel, um die eigentliche Absicht des Codes zu verbergen.

Einige Formen der Verschleierung:

  1. Automatisches Umbenennen von Variablen in kurze, bedeutungslose Namen, um den Code weniger lesbar und schwerer verständlich zu machen.
  2. Entfernen aller zusätzlichen Leerzeichen und Zeilenumbrüche, sodass der Code eine einzige riesige lange Zeile ist.
  3. Teile des Codes werden selbstgeneriert, sodass ein erster Durchlauf des Codes ausgeführt wird, um den eigentlichen Code zu erstellen, der dann ausgeführt wird, um die beabsichtigte Operation auszuführen.
  4. Verwendet Zeichencodes und Zeichenfolgenmanipulation in Kombination mit eval anstelle von normalem JavaScript-Code, um den eigentlichen Code zu erstellen, der ausgeführt werden soll.

Verschleierung ist an sich nicht böse, kann aber dazu verwendet werden, eine böse Absicht zu verbergen, und das ist wahrscheinlich das, was AVG beanstandet hat. Es hat so viel Verschleierung erkannt, dass es nicht sagen konnte, ob das JavaScript etwas zu tun versuchte, was es verhindern wollte. Daher hat es den Code standardmäßig als unsicher erklärt, da es nicht überprüfen kann, ob der Code in Ordnung zu sein scheint.

Antwort2

Unter Verschleierung versteht man das Verbergen der beabsichtigten Bedeutung von etwas.

In diesem Fall reicht ein gut lesbarer JavaScript-Ausschnitt, wie zum Beispiel

window.onload = function() { alert("Hello " + username) };

kann ersetzt werden durch

var _0xc5b2=["\x6F\x6E\x6C\x6F\x61\x64",
        "\x48\x65\x6C\x6C\x6F\x20"];window[_0xc5b2[0]]=
    function (){alert(_0xc5b2[1]+username);} ;

oder auch

eval(unescape("var%20_0xc5b2%3D%5B%22onload%22%2C%22Hello%20%22%5D%3Bwindow"+
  "%5B_0xc5b2%5B0%5D%5D%3Dfunction%20%28%29%7Balert%28_0xc5b2%5B1%5D+username"+
  "%29%3B%7D%20%3B"));

Alle drei Codefragmente tun genau dasselbe, aber nur wenn Sie das erste lesen, können Sie seine Absichten leicht verstehen.

Offenbar versucht AVG, den Zweck des JavaScript-Codes zu verstehen, bevor dessen Ausführung zugelassen wird. Wenn der Code verschleiert ist, schlägt AVG wahrscheinlich fehl. Daher die Warnung.

Allerdings verschleiern manche Websites ihr JavaScript nicht aus böser Absicht, sondern um den Diebstahl ihrer Arbeit zu erschweren. Verschleierung ist normalerweise nutzlos, wenn sie zu diesem Zweck verwendet wird, aber der Punkt ist, dass Verschleierung nicht unbedingt böse Absichten bedeuten muss.

verwandte Informationen