Galileo Computing < openbook > Galileo 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
Galileo 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.


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


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


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


Galileo 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 Katalog
Zum Katalog: JavaScript und AJAX
JavaScript und AJAX
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: JavaScript und AJAX - Das Video-Training






 JavaScript und AJAX -
 Das Video-Training


Zum Katalog: Webseiten programmieren und gestalten






 Webseiten
 programmieren
 und gestalten


Zum Katalog: XHTML, HTML und CSS






 XHTML, HTML und CSS


Zum Katalog: CSS-Praxis






 CSS-Praxis


Zum Katalog: AJAX






 AJAX


Zum Katalog: PHP 5 und MySQL 5






 PHP 5 und MySQL 5


Zum Katalog: TYPO3 4.0






 TYPO3 4.0


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




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