[Cookies]

Querverweise JavaScripts, die Cookies einsetzen, finden Sie hier.

Bei der Veröffentlichung von Java Script war ein Aspekt, dass die Scriptsprache kein Sicherheitsrisiko auf Client-Maschinen darstellen würde, weil dort keine Informationen abgelegt oder von dort geladen werden können.
Das Problem bei dieser Art von Sicherheit ist jedoch, dass es keine Möglichkeit gibt, dass sich dem Leser eine gleichbleibende Kommunikation mit den Webseiten präsentiert, sei es für eine einzelne Internet-Sitzung oder über einen längeren Zeitraum.
Um diesen Mangel an Persistenz zu beheben, haben die Webentwickler CGI (Common Gateway Interface) eingesetzt und auf dem Server Informationen darüber verwaltet, welche Optionen der Leser auf der Webseite ausgewählt hat. Das schien jedoch dem Sinn einer clientseitigen Scriptsprache zu widersprechen, die deshalb eingeführt wurde, damit die Verarbeitung auch auf dem Client stattfinden konnte und nicht ständig auf den Server der Webseite zugreifen sollte.
Netscape hat das Problem, dass keine Informationen auf dem Client gespeichert oder geladen werden können, mit der Einführung von Cookies gelöst.

Cookies sind kleine Informationsabschnitte, die für eine bestimmte Zeitdauer gespeichert werden, und die über ihren Namen und die Webseiten-Position geladen werden können.

So funktioniert ein Cookie

Eine Datei namens cookies.txt enthält alle Cookies, die sich auf der Client-Maschine befinden. Der Zugriff ist auf diese Datei beschränkt, was verhindert, dass ein arglistiger Webentwickler seinen Scriptcode überall auf der Client-Maschine verteilt. Als zusätzliche Sicherheit wird beim Zugriff auf einen Cookie neben seinem Namen auch die Domain der Webseite sowie eine URL angegeben. Beim Zugriff auf eine Webseite werden ihre Cookie-Informationen (basierend auf ihre Position und URL) ermittelt und vom Browser gespeichert.

Der Browser prüft ausserdem, ob ein Cookie noch gültig ist. Andernfalls entfernt er die Cookie-Datei von der Client-Maschine. Das verhindert, dass alte Cookies die Datei unübersichtlich machen.

Der Netscape Navigator verwendet immer noch die Datei cookies.txt, die sich in einem Unterverzeichnis des Communicator-Verzeichnisses befindet.
Der Internet-Explorer dagegen verwendet die Registrierungs-Datenbank, um die Position des Cookie-Unterverzeichnisses festzulegen. das Unterverzeichnis enthält mehrere kleine Dateien , die jeweils ein Cookie repräsentieren.

Es gibt Beschränkungen hinsichtlich der Grösse und Anzahl von Cookies, die eine Webseite auf Ihrer Maschine anlegen kann.

Netscape legt folgende Grenzwerte fest:

- In der Cookie-Datei dürfen sich nur 300 Cookies befinden.
- Jedes Cookie darf max. 4 KB gross sein, inclusive Name und Inhalt.
- jeder Server, bzw. jede Domain kann nur 20 Cookies haben. das bedeutet, für jedes Unterverzeichnis in Ihrem Server haben Sie nur 20 Cookies, für jede explizite URL haben Sie nur 20 Cookies, usw.

abadu -600 Gewinnspiele automatisch Spielen
Besuchen Sie unsere Werbepartner - Sie helfen uns damit, Ihnen unsere Dienste kostenlos anbieten zu können.

Können Cookies eine clientseitige Datenbank bilden?

Nein, das ist auch nicht ihre Aufgabe. Sie sind jedoch sehr praktisch, um persistente Informationen zwischen mehreren Seiten oder zwischen verschiedenen Downloads einzelner Seiten zu speichern. Dadurch sind sie ideal dafür geeignet, in DHTML eingesetzt zu werden, wo eine Webseite nach dem Laden dynamisch geändert werden kann. Mit Hilfe von Cookies werden DHTML-Statusinformationen gespeichert und später dazu genutzt, das Erscheinungsbild der Seite wiederherzustellen.

Ein Cookie wird nach folgendem Muster erzeugt:

function SetCookie(<name>,<wert>,[verfalldatum],[pfad],[domain],[secure]);

<name> - Muss-Angabe: Hier wird dem Cookie ein Name vergeben, anhand dessen er später wieder aufgerufen werden kann.

<value> - Muss-Angabe: Der Wert, den der Cookie später enthält. Hierbei kann es sich um einen Text oder einen Zahlenwert handeln.

[verfalldatum] - optionales Feld: Enthält das datum, an dem der Cookie wieder gelöscht wird. Wird dieser Wert nicht oder 'null' gesetzt, verfällt das Cookie nach Beenden der aktuellen Browsersitzung.

[pfad] - optionales Feld: Gibt an, für welchen Pfad das Cookie gilt. Wird dieser Wert nicht oder 'null' gesetzt, gilt das aktuelle Verzeichnis, aus dem das Dokument aufgerufen wurde.

[domain] - optionales Feld: Gibt an, für welche Domäne das Cookie gilt. Wird dieser Wert nicht oder 'null' gesetzt, gilt die Domäne, aus welchem das Dokument aufgerufen wurde.

[secure] - optionales Feld: enthält einen Boolean-Wert (true/false), der festlegt, ob für die Übermittlung des Cookies ein sicherer Kanal (HTTPS) verwendet werden muss.

Wenn Sie beispielsweise ein Cookie setzen wollen, das den Cookienamen, einen Wert und den Pfad enthält, könnte das so aussehen:

SetCookie ("myCookieName", "myCookieValue", null, "/");

Beachten Sie, dass Sie 'null' als Platzhalter für nicht gesetzte Werte verwenden, sofern nachher weitere Angaben folgen.

Um ein sicheres Cookie zu setzen, das nach nach der aktuellen Sitzung verfällt und für den Pfad '/myPath' gültig ist, kodieren Sie so:

SetCookie (myCookieVar, cookieValueVar, null, "/myPath", null, true);

Beispiel

Das folgende, kleine Beispiel beinhaltet die grundsätzlichen Funktionen eines Cookies. Hierbei wird überprüft, ob bereits ein passendes Cookie gesetzt ist. Ist dies der Fall, wird der Inhalt, in diesem Falle der Name des Besuchers ausgelesen und am Bildschirm angezeigt. Ist noch kein Cookie vorhanden, wird der Besucher zur Eingabe seines Namens aufgefordert und mit dem Cookie abgespeichert. Ausserdem wird die Lebensdauer des Cookies auf 90 Tage festgelegt.

<script language="JavaScript">
<!--
  LIVEDAYS=90;
  function set_cookie(name, value) {
    document.cookie=name+"="+escape(value)+"; EXPIRES="+cookie_live();
  }
  function cookie_live() {
    var date=new Date();
    date.setDate(date.getDate()+LIVEDAYS);
    var gmt=date.toGMTString();
    var k1=gmt.indexOf(" ");
    var k2=gmt.indexOf(" ", k1+1);
    var k3=gmt.indexOf(" ", k2+1);
    var str=gmt.substring(0,k2)+"-"+gmt.substring(k2+1,k3)+"-"+gmt.substring(k3+3,gmt.length);
    return str;
  }
  function get_cookie(name) {
    var value=null;
    if(document.cookie != "") {
      var kk=document.cookie.indexOf(name+"=");
      if(kk >= 0) {
        kk=kk+name.length+1;
        var ll=document.cookie.indexOf(";", kk);
        if(ll < 0)ll=document.cookie.length;
        value=document.cookie.substring(kk, ll);
        value=unescape(value);
      }
    }
    return value;
  }
//-->
</script>

<script language="JavaScript">
<!--
  anrede=get_cookie("anrede");
  if(anrede == null) {
    anrede=prompt("Wie soll ich Sie anreden ?");
    if(anrede == null || anrede == "") {
      anrede="(unbekannter User)";
    } else {
      set_cookie("anrede", anrede);
    }
  }
  document.write(anrede);
//-->
</script>

Zur besseren Verständlichkeit gehen wir den Code noch einmal der Reihe nach durch.

Die Funktion "get_cookie" prüft ob ein cookie mit dem vorgegebenen Namen gesetzt ist und liefert gegebenenfalls den entsprechenden Wert zurück.

Mit "set_cookie" wird ein neuer cookie angelegt (bzw. ein vorhandener überschrieben). Eingabeargumente sind der Name des cookies sowie sein Wert.

Die Funktion "cookie_live" liefert das von document.cookie für ein Verfallsdatum erwartete Datumsformat. Es wird ein Datum generiert, das um die in in der Variablen "LIVEDAYS" angegebenen Tage in der Zukunft liegt.



Mitglied bei Linkstation
Mitglied bei Linkstation

Copyright © 1998- Nightfire Webworker Archiv