Was ist JavaScript-Verschleierung und warum ist es eine Bedrohung?

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

Warum wurde die Webseite blockiert und was genau bedeutet das?

Author: Dennis, 2012-04-28

2 answers

Verschleierung ist ein Mittel, um die wahre Bedeutung und Absicht Ihres Javascript-Codes zu" verschleiern". Einige Websites verwenden es als Hindernis für Personen, die ihren Code kopieren/ausleihen möchten. Andere Websites verwenden es als Mittel, um die tatsächliche Absicht des Codes zu verbergen.

Einige Formen der Verdunkelung:

  1. Automatische Umbenennung von Variablen in kurze bedeutungslose Namen, um den Code weniger lesbar und verständlicher zu machen.
  2. Entfernen aller zusätzlichen Leerzeichen und Zeilenumbrüche, damit der Code eins ist riesige lange Schlange.
  3. Teile des Codes selbst generierend machen, so dass ein erster Durchlauf des Codes ausgeführt wird, um den tatsächlichen Code zu erstellen, der dann ausgeführt wird, um die beabsichtigte Operation auszuführen.
  4. Verwendet Zeichencodes und Zeichenfolgenmanipulationen in Kombination mit eval anstelle von normalem Javascript-Code, um den tatsächlich ausgeführten Code zu erstellen.

Obskuration ist an sich nicht böse, aber es kann verwendet werden, um zu versuchen, eine böse Absicht zu verbergen, und das ist wahrscheinlich, was AVG Einwand war. Es erkannte so viel Verdunkelung, dass es nicht sagen konnte, ob das Javascript versuchte, etwas zu tun, was es zu verhindern versuchte. Daher wurde der Code standardmäßig als unsicher deklariert, da nicht überprüft werden kann, ob der Code in Ordnung zu sein scheint.

 38
Author: jfriend00,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-04-28 18:08:21

Verschleierung bezieht sich darauf, die beabsichtigte Bedeutung von etwas zu verbergen.

In diesem Fall ein gut lesbares JavaScript-Snippet wie

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 sogar

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 Code-Snippets machen genau dasselbe, aber nur wenn Sie den ersten lesen, können Sie seine Absichten leicht verstehen.

Anscheinend versucht AVG, den Zweck von JavaScript-Code zu verstehen, bevor er seine Ausführung zulässt. Wenn der Code verschleiert wird, AVG wird wahrscheinlich scheitern. Daher die Warnung.

Davon abgesehen verschleiern einige Websites ihr JavaScript nicht wegen böser Absichten, sondern um es schwierig zu machen, ihre Arbeit zu stehlen. Verschleierung ist normalerweise nutzlos, wenn sie für diesen Zweck verwendet wird, aber der Punkt ist, dass Verschleierung nicht unbedingt schlechte Absichten bedeutet.

 13
Author: Dennis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-04-28 18:18:59