Skriptsprachen und JavaScript einfach erklärt

daten 29
Fachbeitrag

Im Zusammenhang mit Skriptsprachen und insbesondere mit JavaScript hört man oft, dass IT-Angriffe auf die Sicherheit möglich sind und man z.B. JavaScript deaktivieren soll. In dem folgenden Artikel wird zunächst allgemein geklärt, was eine Skriptsprache ist und wie es um die Sicherheit von JavaScript steht.

Programmiersprachen und Übersetzer-Tools

Bevor wir uns auf das JavaScript stürzen, möchten wir zunächst einen Exkurs zu den Basics machen. Für alle Uneingeweihten werden wir zum besseren Verständnis den Unterschied zwischen Maschinen- und Programmiersprache sowie zwischen Compiler und Interpreter erläutern. Alle anderen dürfen diesen Exkurs gähnend überspringen.

Maschinensprache

Der Rechner versteht nur 0 und 1. Die Instruktionen, die er ausführen soll, müssen also in einer Abfolge von Nullen und Einsen vorliegen. Der mit der Maschinensprache erstellte Code heißt dann Maschinencode und liegt in Binärform vor.

Programmiersprache

Da es aber schwierig ist, in unverständlichen Abfolgen von Nullen und Einsen zu programmieren, gibt es „höhere“ Programmiersprachen wie Java oder C++. Der Entwickler schreibt seine Anweisungen also in einer verständlichen Sprache. Der mit einer solchen Programmiersprache erstellte Code heißt dann Quellcode oder auch Sourcecode.

Dieser Quellcode muss nun aber in den Maschinencode übersetzt werden, damit der Rechner die Befehle interpretieren und ausführen kann. Deswegen wird ein Übersetzungs-Tool benötigt.

Compiler

Bei einem Compiler handelt es sich um ein solches Übersetzung-Tool. Dabei wird der Quellcode einmalig in den Maschinencode übersetzt, so dass dieser beliebig oft genutzt werden kann. Erst wenn sich etwas an dem Quellcode ändert, wird er wieder übersetzt. Das Zwischenergebnis des übersetzten Codes heißt dann Objektcode.

Interpreter

Der Interpreter ist auch ein Übersetzungs-Tool. Im Gegensatz zum Compiler wird der Quellcode allerdings nicht einmalig übersetzt, sondern immer wieder während seiner Ausführung. Jedes Mal wenn das Programm also ausgeführt wird, muss der Quellcode stets neu übersetzt werden.

Skriptsprache

Eine Skriptsprache (z.B. PHP oder JavaScript) ist zunächst ebenfalls eine Programmiersprache. Sie unterscheidet sich von einer konventionellen Programmiersprache unter anderem dadurch, dass sie meist nicht kompiliert, sondern interpretiert wird. Der Quellcode wird also bei jeder Ausführung immer wieder neu übersetzt. Ein Programm, das in einer Skriptsprache geschrieben wurde, wird auch „Skript“ genannt (oder „Makro“ bei Microsoft).

Der Vorteil einer Skriptsprache liegt darin, dass diese mächtig und auch schneller erlernbar ist als andere Programmiersprachen (z.B. dank des Verzichts auf den Deklarationszwang von Variablen). Die Befehle können sogar in einer gewöhnlichen Textdatei (wie Texteditor) verfasst werden, so dass keine spezielle Entwicklungsumgebung benötigt wird.

Demgegenüber steht ein Geschwindigkeitsnachteil, da das Skript während seiner Ausführung immer wieder neu übersetzt werden muss. Verschiedene technische Lösungen versuchen aber diesen Nachteil zu umgehen.

Um Vorteile beider Programmiersprachen zu nutzen, werden heutzutage auch Mischformen benutzt, so dass Skriptsprachen Funktionalitäten eines Anwendungsprogramms ergänzen können.

Heute gibt es eine Vielzahl von Skriptsprachen, wobei wir hier explizit JavaScript vorstellen werden.

JavaScript

JavaScript ist eine dynamische Skriptsprache, die auf Webseiten weit verbreitet ist, obwohl sie auch unabhängig von einem Browser in anderen Gebieten zum Einsatz kommt. JavaScript hat allerdings nichts mit der Programmiersprache „Java“ zu tun.

Typische Anwendungsgebiete von JavaScript im Onlinebereich, wären z.B. das Anzeigen eines Pop-ups, Anzeige von Werbebannern, Plausibilitätsprüfung bei Dateneingaben usw.

JavaScript wird also benötigt, um dynamische Funktionalitäten bereit zu stellen. HTML-Seiten sind zunächst statisch. Es wird ein Text hinterlegt, der jedoch nur manuell geändert werden kann. Will ein Webseitenanbieter aber z.B. aktuelle Daten (wie Wettervorhersage, Börsenkurse) oder Webanwendungen auf seiner Internetpräsenz bereitstellen, müssen die Daten immer wieder aktualisiert werden. In diesem Fall bedient man sich einer dynamischen Sprachen wie JavaScript.

Ein Vorteil von JavaScript ist, dass das Skript nicht auf dem Webserver ausgeführt wird, sondern mittels eines Browsers auf Seiten des Internetnutzers. Das spart nicht nur Rechenleistung beim Server, sondern auch Kommunikationswege. Ständiges Anfragen und Antworten zwischen Client und Server fällt damit weg. Hierfür läuft in dem Browser eine sogenannt „JavaScript Engine“, die das Skript interpretiert. So kann auf Seiten des Clients eine Dynamik reingebracht werden, ohne dass er mit dem Server interagieren muss.

Was macht JavaScript so gefährlich?

Zunächst ist JavaScript eine sehr mächtige Sprache. Es ist deswegen schwer überschaubar, welche Arten von Attacken mit JavaScript möglich sind.

Eine der bekanntesten Attacken stellt das Cross-Site-Scripting (XSS, Codeeinschleusung) dar. Dabei kann ein Angreifer Webseiten mit einem Skript infizieren (z.B. durch Foreneinträge, Blogs, Wikis usw.). Wenn ein Internetnutzer diese infizierten Webseiten aufruft, wird in seinem Browser das Skript (mit dem Schadcode) im Hintergrund ausgeführt, ohne dass er dies merkt. Durch die Schwachstelle des Cross-Site-Scripting (XSS) kann ein Angreifer damit geheime Information ausspähen, die im Web zwischen dem Client und dem Server ausgetauscht werden.

Beispiel: Online-Banking

Wir gehen von ein paar Kriminellen aus, die Geld benötigen. Sie haben also vor, die Konten von unschuldigen Mitbürgen zu plündern. Um an Kontoinformationen heranzukommen, erstellen sie ein Skript, dass Cookies ausspähen soll. Um dieses Skript zu verbreiten, posten sie auf einer neutralen Plattform einen Artikel. Allerdings wird in dem CMS nicht nur der Artikel hinterlegt, der auf der Webseite zu lesen ist, sondern auch ihr Skript mit dem Schadcode. Das Programm ist allerdings für den normalen Nutzer nicht sichtbar. Der Leser sieht nur den Artikel und weiß nicht, dass sein Browser im Hintergrund das Skript ausführt.

Das ist erstmal bedingt tragisch. Dramatisch wird es aber dann, wenn der Leser parallel in seinem Browser z.B. Online-Banking tätigt. Denn während seiner Sitzung vergibt die Online-Banking Webseite einen Session Cookie. Mit ihrem Skript können die Kriminellen diesen Session Cookie ausspähen und an ihren eigenen „Feindserver“ senden. Mit dem Cookie in ihrer Gewalt, können sie nun die Webseite des Online-Banking aufrufen und sind in dem Banking-Account ihres Opfers eingeloggt. Dadurch können sie auch Manipulationen in dem Konto vornehmen.

Dies ist nur eines von vielen Beispielen, wie Manipulationen mit Hilfe von JavaScript ermöglicht werden.

Sicherheit

Moderne Browser haben Gegenmaßnahmen ergriffen, die Risiken minimieren sollen. So bieten einige Browser Mechanismen an, mit denen XSS-Angriffe erkannt und verhindert werden sollen. Dabei wird z.B. jede Webseite im Browser separat ausgeführt und somit ein Datenaustausch untereinander unterbunden. Aber auch hier gilt, dass es natürlich keinen 100%igen Schutz gibt.

Der Nutzer selbst kann durch folgende Maßnahmen das Risiko minimieren:

  • Bei sensiblen Tätigkeiten wie dem Online-Banking, sollte man nicht parallel auf anderen Seiten surfen.
  • Alternativ sollte JavaScript im Browser deaktiviert oder per Add-on individuell festlegt werden.
  • Vor und nach dem Online-Banking sollte der Cache im Browser gelöscht werden. Vorsichtshalber sollte der Browser zusätzlich vor jedem weiteren Surfen erstmal geschlossen werden.
  • Man kann auch zwei verschiedene Browser nutzen. Den einen nur für sensible Tätigkeiten und den anderen für das allgemeine Surfen.

Sie haben Fragen?

Unsere Berater helfen Ihnen dabei, den Umgang mit personenbezogenen Daten in Ihrem Unternehmen rechtssicher und praxisgerecht zu gestalten. Dabei unterstützen wir Sie u.a. bei folgenden Themen:

  • Aufbau, Optimierung und Überprüfung der IT-Sicherheit nach anerkannten Standards
  • Vorbereitung auf eine Zertifizierung nach ISO 27001 oder IT-Grundschutz
  • Stellung von externen IT-Sicherheitsbeauftragten

Informieren Sie sich hier über unser Leistungsspektrum: IT-Sicherheit

Hinterlassen Sie einen Kommentar

Die von Ihnen verfassten Kommentare erscheinen nicht sofort, sondern erst nach Prüfung und Freigabe durch unseren Administrator. Bitte beachten Sie auch unsere Nutzungsbedingungen und unsere Datenschutzerklärung.