|
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.
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.
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
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
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.
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.
Diese Seite ist Teil der de.comp.lang.javascript FAQ. Die Einstiegsadresse lautet http://www.dcljs.de/.
Dieser Text wurde erstellt von Stefan Mintert (©).
© S. Mintert, Ch. Kühnel
______ letzte Änderung: 01.01.2002 ______
Original-URL dieser Datei: http://dcljs.de/faq/antwort.php?Antwort=misc_passwort