Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 <<   zurück
JavaScript und AJAX von Christian Wenz
Das umfassende Handbuch
Buch: JavaScript und AJAX

JavaScript und AJAX
839 S., mit DVD, 39,90 Euro
Rheinwerk Computing
ISBN 3-89842-859-1
gp Kapitel 28 Top Secret: Passwortschutz
  gp 28.1 URL aus Passwort
    gp 28.1.1 Passwort == URL
    gp 28.1.2 Passwort » URL
    gp 28.1.3 f : Passwort ® URL
  gp 28.2 Seiten mit Cookies schützen
    gp 28.2.1 Passwort im Quelltext
    gp 28.2.2 Mit Java
  gp 28.3 Ein Blick über den Tellerrand
    gp 28.3.1 PHP
    gp 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).

Abbildung
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.


Rheinwerk Computing

28.1 URL aus Passwort  downtop

Die wohl einfachste Methode, einen Bereich per Passwort zu schützen, besteht darin, die eigentliche URL dieses Bereichs einfach nicht zu verraten.


Rheinwerk Computing

28.1.1 Passwort == URL  downtop

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>

Abbildung
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.


Rheinwerk Computing

28.1.2 Passwort » URL  downtop

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.


Rheinwerk Computing

28.1.3 f : Passwort ® URL  toptop

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:

gp  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.
gp  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:

gp  Das Passwort ist »hfifjn« (oder, bei der Verwendung von codeschutz_decode(), »fdgdhl«), und der Verzeichnisname lautet »geheim«.
gp  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
  
  Zum Rheinwerk-Shop
Neuauflage: JavaScript
Neuauflage: JavaScript
bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: jQuery






 jQuery


Zum Rheinwerk-Shop: Einstieg in JavaScript






 Einstieg in JavaScript


Zum Rheinwerk-Shop: Responsive Webdesign






 Responsive Webdesign


Zum Rheinwerk-Shop: Suchmaschinen-Optimierung






 Suchmaschinen-
 Optimierung


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 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.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern