Homepage de.comp.lang.javascript
Homepage
de.comp.lang.javascript

FAQ de.comp.lang.javascript

FAQ
de.comp.lang.javascript

 

 

Bitte verwenden Sie als Einstiegsadresse in diese FAQ die Homepage der Newsgroup de.comp.lang.javascript. Der Aufenthaltsort dieser Seiten hier kann sich ohne Vorwarnung ändern.
 

 

Kann ich Seiten mit Hilfe von JavaScript durch ein Paßwort schützen?

Nein! Ein wirklich sicherer Paßwortschutz ist mit JavaScript nicht möglich. Dennoch sind verschiedene Verfahren im Einsatz. Diese werden im folgenden kurz vorgestellt und ihre Schwachstellen angesprochen. Bitte beachte, daß hier nur eine kurze Diskussion stattfindet. Keines der genannten Verfahren sollte eingesetzt werden, um sensible Daten zu schützen. Die größte Gefahr besteht im Glauben, eines der Verfahren sei sicher. Das Thema ist viel zu komplex, um alle Aspekte auf einen Blick zu erkennen. Falls Du wirklich einen sicheren Schutz benötigst, solltest Du Dich von einem Experten beraten lassen und auf keinen Fall JavaScript verwenden. (Es liegt natürlich keine inhärente Schwäche der Sprache vor. Der Grund ist vielmehr die gesamte Umgebung, in der die Sprache zum Einsatz kommt.)

Bevor es losgeht, zunächst eine genauere Aufgabenstellung: Eine Web-Seite ("Zielseite") soll nur nach Eingabe eines geheimen Paßwortes zugreifbar sein. Dafür stehe nur client-seitiges JavaScript zur Verfügung, über die Server-Seite sowie die Verbindung zwischen Client und Server seien keine Voraussetzungen gemacht.

Fall 1: Paßwort unverschlüsselt im Programm, Zielseite ungeschützt mit geheimer Adresse (URL)

Eine Abfrage der folgenden Form ist nun wirklich indiskutabel.

var eingabe = "";
var passwd  = "geheim"; 
while (eingabe != passwd)
{
   eingabe = prompt("Bitte geben Sie das Paßwort ein.");
}

// laden der Zielseite
self.location = eingabe + ".html";

Schwächen

Sicherheit

Fall 2: Kein Paßwort im Programm, Zielseite ungeschützt mit geheimer Adresse (URL)

Eine Abwandlung des obigen Verfahrens besteht darin, keinen Vergleich zwischen der Eingabe und dem Paßwort durchzuführen, sondern statt dessen die Eingabe als Filenamen der Zielseite zu verwenden.

var eingabe = prompt("Bitte geben Sie das Paßwort ein.");

// laden der Zielseite
self.location = eingabe + ".html";

Eine weitere Variation stellt die "Dekodierung" der Eingabe dar.

var eingabe = prompt("Bitte geben Sie das Paßwort ein.");

var ziel    = dekodiere(eingabe);

// laden der Zielseite
self.location = ziel + ".html";

Unabhängig von der Funktion dekodiere() und des benutzten Verfahrens wird hierbei keine höhere Sicherheit erreicht.

Schwächen

Sicherheit

Fall 3: Zielseite in verschlüsselter Form im JavaScript-Programm, Paßwort fungiert als Schlüssel zum Dekodieren

Bei diesen Verfahren wird die Zielseite in verschlüsselter Form in einer JavaScript-Variablen mitgeschickt. Ein Eingabefeld gestattet dem Benutzer die Eingabe des Paßwortes. Dieses Paßwort wird verwendet, um die verschlüsselte Nachricht zu dekodieren. Die Darstellung kann dann wie gewohnt mit JavaScript erledigt werden.

Beispielhafte Vorgehensweise:

var kodierte_nachricht   = "JmlwhuyxgiqzkdnevLfkllmusigRionvpgpFa";

var passwd = prompt("Bitte geben Sie das Paßwort ein.");

var dekodierte_nachricht = dekodiere(kodierte_nachricht,passwd);

Schwächen

Sicherheit

Als Beispiel folgt nun noch eine praktische Demonstration des zuletzt beschriebenen Verfahrens. Die Funktion dekodiere() ist hier äußerst einfach aufgebaut, sie arbeitet mit einer simplen Indexverschiebung von Zeichen innerhalb eines fest vorgegebenen Zeichensatzes. Der Einsatz unter "realen Bedingungen" ist nicht zu empfehlen.

1. Paßwort zum Kodieren
2. Ursprungstext (nur Buchstaben und Ziffern)
3.
4. Paßwort zum Dekodieren
5.

Falls Dir weitere Vorgehensweisen einfallen, schick' mir bitte eine Mail. (Bitte nur JavaScript-relevante Vorschläge; keine HTTP/SSL-basierten.) Weitere Infos zu diesem Thema in de.comp.security.

top

Diese Seite ist Teil der de.comp.lang.javascript FAQ. Die Einstiegsadresse lautet http://www.dcljs.de/. Der Text der Seite wurde erstellt von Stefan Mintert (©).

 ______ letzte Änderung: 12/2012 ______ 

 
© S. Mintert, Ch. Kühnel