Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einleitung
2 Webbrowser
3 JavaScript einbauen
4 Programmieren mit JavaScript
5 Datum
6 Zufall
7 Browserinformationen
8 Fenster
9 Formulare
10 Frames und Iframes
11 Grafiken
12 Cookies
13 Objekte und Arrays
14 Ereignisbehandlung
15 Fehlerbehandlung
16 DOM
17 DHTML und CSS
18 AJAX
19 XML
20 Web Services
21 AJAX-Frameworks
22 Plugins
23 Multimedia
24 Java
25 Serverseitige Technologien
26 JavaScript goes .NET
27 Code schützen
28 Top Secret: Passwortschutz
29 Signierte Skripte
30 JavaScript und Sicherheit
31 Navigation
32 Warenkorb
33 JavaScript-Bibliotheken
34 Referenz
35 Quellen im Web
36 Die Zukunft von JavaScript
Index
Download: - ZIP, ca. 9,2 MB
Buch bestellen
Ihre Meinung?
<< zurück | Galileo Computing / <openbook> / JavaScript und AJAX | vor >>
JavaScript und AJAX von Christian Wenz Das umfassende Handbuch
JavaScript und AJAX 839 S., mit DVD, 39,90 Euro Galileo Computing ISBN 3-89842-859-1 |
| Kapitel 28 Top Secret: Passwortschutz
|  | 28.1 URL aus Passwort
|  |  | 28.1.1 Passwort == URL
|  |  | 28.1.2 Passwort » URL
|  |  | 28.1.3 f : Passwort ® URL
|  | 28.2 Seiten mit Cookies schützen
|  |  | 28.2.1 Passwort im Quelltext
|  |  | 28.2.2 Mit Java
|  | 28.3 Ein Blick über den Tellerrand
|  |  | 28.3.1 PHP
|  |  | 28.3.2 .htaccess
top-secret siehe topsecret Ew: streng geheim – Die aktuelle deutsche Rechtschreibung, Naumann & Göbel 1997 # Kapitel 28 Top Secret: Passwortschutz Eines der Ziele, auf dem die Idee des Internet fußt, ist der freie und unbeschränkte Zugriff auf Informationen. Mit der Kommerzialisierung des Webs entstand jedoch die Notwendigkeit, nur einem begrenzten Personenkreis den Zugriff auf bestimmte Bereiche einer Website zu gewähren. Doch nicht nur merkantile Absichten erfordern einen geschützten Bereich, auch persönliche Informationen wie beispielsweise Bewerbungsunterlagen, die online übertragen werden, sollten nicht für jedermann und -frau einsehbar sein. Mit serverseitigen Mitteln ist das kein größeres Problem: Ein Benutzername und ein Passwort können als Teil der HTTP-Anforderung an den Webserver übertragen werden, und der Webserver kann diese Daten mit den gespeicherten Informationen auf dem lokalen System überprüfen. Passen der Benutzername und das Passwort zusammen, wird das angeforderte Dokument übertragen, andernfalls wird ein Error-Code 401 zurückgegeben – Authorization required (siehe Abbildung 25.1). Hier klicken, um das Bild zu Vergrößern Abbildung 28.1 Fehlermeldung bei keinem (oder falschem) Passwort Eine der häufigsten Fragen lautet nun, ob dies auch mit JavaScript möglich sei. Um die Antwort gleich vorwegzunehmen: nein, leider nicht. Egal, was die Leute Ihnen erzählen mögen, ein hundertprozentiger Schutz besteht bei clientseitigen Methoden nicht, denn der Code kann mit ein wenig krimineller Energie eingesehen, analysiert und letztendlich geknackt werden. Serverseitige Mittel sind jedoch gleichzeitig teuer und mühsamer zu implementieren, weswegen sich JavaScript unter Umständen als Alternative anbietet. Im Folgenden werden Sie einige Möglichkeiten kennenlernen, um den subversiven Elementen, die unerlaubten Zugriff erhalten möchten, das Leben möglichst schwer zu machen. Die PIN Ihrer EC-Karte sollten Sie dennoch nicht auf diese Art und Weise schützen – und sie sowieso am besten nicht online verwalten. Denn das wäre eine genauso kluge Idee, wie die Nummer direkt auf die Karte zu schreiben und sie an einem Geldautomaten liegen zu lassen. ## 28.1 URL aus Passwort Die wohl einfachste Methode, einen Bereich per Passwort zu schützen, besteht darin, die eigentliche URL dieses Bereichs einfach nicht zu verraten. ### 28.1.1 Passwort == URL Das »Passwort«, das in diesem Fall eingegeben werden muss, entspricht dann meistens der eigentlichen, geheimen URL:
    <html>
    <head>
    <title>Top Secret</title>
    <script type="text/javascript"><!--
    function check(f) {
       var pwd = f.elements["pass"].value;
       location.href = pwd;
    }
    //--></script>
    </head>
    <body>
    <h1>Passwortabfrage</h1>
    <form onsubmit="check(this); return false;">
       <input type="password" name="pass" />
       <input type="submit" value="Login" />
    </form>
    </body>
    </html>
Hier klicken, um das Bild zu Vergrößern Abbildung 28.2 Die Passwortabfrage im Browser Das Passwort hat in diesem Fall oftmals die Form »xlbrmf.html« oder »geheimesverzeichnis/geheimedatei.html«, und die eigentlichen geheimen Daten sind nicht weiter geschützt. Kennt der Feind die URL, kennt er deren Inhalte, denn diese URL kann auch direkt durch Eingabe im Webbrowser aufgerufen werden. Ganz nebenbei deutet das Passwort schon auf die Art des verwendeten Zugriffsschutzes hin, und auch Leute, die berechtigt Zugriff auf die geheimen Inhalte haben, werden das System durchschauen und die Passwort-abfrage schlichtweg umgehen, indem sie die URL von Hand zusammensetzen. Diese Situation kann man aber noch ein wenig verbessern. ### 28.1.2 Passwort » URL Es stellt nur eine Verbesserung dar, die URL aus dem Passwort zusammenzusetzen, beispielsweise indem ein weiteres Verzeichnis vorangestellt und ein spezielles Zeichen angefügt wird. Auch, wenn das nicht mehr ganz so durchsichtig ist, das eigentliche (schwache) Schutzprinzip bleibt dasselbe: Die URL selbst ist ungeschützt.
    <html>
    <head>
    <title>Top Secret</title>
    <script type="text/javascript">
    function check(f){
       var pwd = f.elements["pass"].value;
       var url = "geheimverzeichnis/";
       url += pwd;
       url += "-geheim.html";
       location.href = url;
    }
    //--></script>
    </head>
    <body>
    <h1>Passwortabfrage</h1>
    <form onsubmit="check(this); return false;">
       <input type="password" name="pass" />
       <input type="submit" value="Login" />
    </form>
    </body>
    </html>
Lautet das Passwort nun beispielsweise »galileo«, so würde die (relative) URL geheimesverzeichnis/galileo-geheim.html aufgerufen werden. ### 28.1.3 f : Passwort ® URL Eine weitere Idee besteht darin, die URL zwar aus dem Passwort zu erzeugen, den Zusammenhang aber nicht so offensichtlich wie oben darzustellen. In Kapitel 27 haben Sie die Funktionen codeschutz_encode() und codeschutz_decode() kennen gelernt, die eine Zeichenkette durch die Verschiebung von Buchstaben verschlüsseln (z. B. wird aus einem a ein b, aus b wird c und so weiter; aus z wird a). Ihnen stehen nun zwei Varianten zu Verfügung:
| Sie geben dem geheimen Verzeichnis (oder der geheimen Datei) einen sprechenden Namen (zum Beispiel »geheim«). Das Passwort muss nun derart beschaffen sein, dass die Anwendung von codeschutz_decode() (oder wahlweise codeschutz_encode()) »geheim« zurückliefert.
| Sie geben dem Passwort einen sprechenden Namen (zum Beispiel »geheim«). Der Name des versteckten Verzeichnisses oder der versteckten Datei muss das Ergebnis der Anwendung von codeschutz_decode() oder codeschutz_encode() auf das Passwort sein.
Bei der Verwendung einer Schrittweite von 1 bei der Verschlüsselung würde aus »geheim« der String »hfifjn« werden (denn codeschutz_ encode("geheim", 1) ergibt "hfifjn"). Sie haben also zwei Möglichkeiten:
| Das Passwort ist »hfifjn« (oder, bei der Verwendung von codeschutz_decode(), »fdgdhl«), und der Verzeichnisname lautet »geheim«.
| Das Passwort ist »geheim«, und der Verzeichnisname ist – je nachdem, ob codeschutz_decode() oder codeschutz_encode() verwendet wird – »hfifjn« oder »fdgdhl«.
Je nach Art Ihrer Website und Ihrer Zielgruppe sollten Sie sich überlegen, ob Sie Ihren Besuchern ein schwer zu merkendes Passwort zumuten können oder ob Sie dann doch lieber dem geheimen Verzeichnis einen kryptischen Namen geben. Im Folgenden sehen Sie Code, der das Passwort decodiert (oder codiert) und dann die entsprechende URL aufruft:
    <html>
    <head>
    <title>Top Secret</title>
    <script type="text/javascript"><!--
    function codeschutz_encode(s, delta) {
       var temp = "";
       var alt, neu;
       for (var i=0; i<s.length; i++) {
          alt = s.charCodeAt(i);
          if (alt>=65 && alt<=90) {
             neu = alt + delta;
             if (neu > 90) {
                neu -= 26;
             }
          } else if (alt>=97 && alt<=122) {
             neu = alt + delta;
             if (neu > 122) {
                neu -= 26;
             }
          } else {
             neu = alt;
          }
          temp += String.fromCharCode(neu);
          }
       return temp;
    }

    function check(f) {
       var pwd = f.elements["pass"].value;

       url = codeschutz_encode(pwd, 13);
       location.href = url;
    }
    //--></script>
    </head>
    <body>
    <h1>Passwortabfrage</h1>
    <form onsubmit="check(this); return false;">
       <input type="password" name="pass" />
       <input type="submit" value="Login" />
    </form>
    </body>
    </html>
Die hier vorgestellten Methoden haben alle eines gemeinsam: Sie bauen darauf, dass die URL der geheimen Inhalte tatsächlich geheim ist. Sobald die URL bekannt ist, kann sie auch direkt aufgerufen werden, es gibt keinen Schutz. Im nächsten Abschnitt lernen Sie Methoden kennen, um die eigentlichen Seiten ebenfalls zu schützen – mit JavaScript natürlich.
<< zurück | <top> | vor >>
Zum Katalog
JavaScript und AJAX bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung
Buchtipps
| JavaScript und AJAX - Das Video-Training
| Webseiten programmieren und gestalten
| XHTML, HTML und CSS
| CSS-Praxis
| AJAX
| PHP 5 und MySQL 5
| TYPO3 4.0
Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

Copyright © Galileo Press 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

[Galileo Computing]
Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de