Cookies sind kleine Textdateien, die auf Ihrem Computer gespeichert werden. Sie können prinzipiell keinen ausführbaren Code enthalten, sind damit also garantiert Viren-frei.
Diese Textdateien werden entweder durch JavaScripts oder durch CGI-Anwendungen erzeugt. In ihnen können verschiedenste Informationen gespeichert werden, z.B. wer Sie sind (gut zu sehen bei Amazon.de) oder mit welchem Passwort Sie sich identifizieren (gutes Beispiel: die UBB-Boardsysteme). Letztendlich bestimmt der Programmierer des JavaScripts bzw. der CGI-Anwendung, was das Cookie enthält.
Würden die Informationen einfach nur in der Cookie-Datei gespeichert, wären sie sinnlos. Der Programmierer hat daher die Möglichkeit, in den Cookies gespeicherte Informationen wieder abzurufen. Damit Daten-Spione nicht alle Ihre Cookies auslesen können, werden Cookies nur an den Server gesendet, von dem sie gekommen sind.
Insgesamt kann man sagen, dass Cookies keinen direkten Schaden anrichten können. Denken Sie daran, es werden nur kleine Textdateien hin- und hergeschoben. Bedenklich ist jedoch, dass Cookies theoretisch für das Verfolgen von Usern über verschiedene Websites hinweg genutzt werden könnten.Richtig eingesetzt sind Cookies keine Belästigung, sondern eine enorme Hilfe für z.B. Besucher einer personalisierbaren Seite.
Leider gibt es bei vielen Surfern immer noch Vorbehalte gegenüber Cookies, was zu einem großen Teil an falschen, im Netz kursierenden Informationen über Cookies liegt. Daher ist es sinnvoll, die Anwender vor der Verwendung von Cookies genau darüber aufzuklären, was sie erwartet.
Autor: Alexander Dilthey
Quelle:
http://www.aboutwebdesign.de/awd/content/978831056.shtml
Erstmalig veröffentlicht: 07.01.2001
Cookies sind immer dann gefragt, wenn es darum geht, eine Information auf dem Browser Ihres Benutzers zu speichern (für nähere Informationen zu Cookies siehe Was sind Cookies?).
Gerade Script-Programmierer, die personalisierbare Anwendungen erstellen, machen Gebrauch von der Cookie-Technologie. Praktisches Beispiel: Sie wollen eine Anwendung erstellen, die es dem Benutzer erlaubt, sich das Design Ihrer Seiten selbst zusammenzustellen. Beim nächsten Besuch soll exakt die gleiche Design-Zusammenstellung angezeigt werden. Dafür müssen Sie auf dem Computer des Benutzers speichern, welches Design er sich ausgesucht hat - ein Fall für Cookies.
Glücklicherweise unterstützt das CGI-Modul den Umgang mit Cookies:
use CGI qw(:standard); my $cookie = cookie ( -NAME => 'lay', -VALUE => $lay, -EXPIRES => '+10y', -DOMAIN => '.aboutwebdesign.de' );
Die Bedeutung Optionen -NAME
und -VALUE
sollte sich von selbst erschließen. Der bei -NAME angegebene Wert wird übrigens hinterher benötigt, um den bei -VALUE angegebenen String wieder auszulesen.
-EXPIRES
legt fest, wie lange das Cookie gültig, also abrufbar, bleiben soll. Folgende Werte sind hier erlaubt:
+30s - 30 Sekunden +10m - 10 Minuten +1h - 1 Stunde -1d - überhaupt nicht now - überhaupt nicht +3M - 3 Monate +10y - 10 Jahre Thursday, 27-Apr-2000 01:30:22 GMT - Beliebig festlegbar
Wobei letztere Angabe natürlich nur ein Beispiel ist..
Mit der Option -DOMAIN kann festgelegt werden, welche Server das Cookie abrufen dürfen. Wird diese Option weggelassen, kann nur der Server, der das Cookie gesetzt hat, das Cookie abrufen. Entscheidet man sich für den Einsatz dieser Option, muss man auf jeden Fall zwei Punkte einsetzen (überlicherweise einen vor dem Domainnamen und einen vor der Top-Level-Domain).
Vorläufiges Fazit: ein Cookie-Objekt ist in der $cookie-Variable gespeichert. Um das Cookie letztendlich an den Benutzer zu senden, verwenden Sie diesen Code:
print redirect( -URL => "http://www.xyz.de/success.html", -COOKIE => $cookie );
Wichtig ist, dass Sie vorher keinen HTML-Header gesendet haben. Daher ist es auch unmöglich, gleichzeitig ein Cookie und eine normale HTML-Seite zu senden. Was jedoch möglich ist: erst das Cookie zu senden und dann den Benutzer auf eine normale HTML-Seite weiterzuleiten, wo ihn dann eine z.B. eine Bestätigungs-Meldung erwartet. Dazu dient der Parameter -URL.
Der Abruf eines Cookies gestaltet sich wesentlich unkomplizierter:
use CGI qw(:standard); my $wert = cookie("identifier");
Der Identifier muss dem Wert entsprechen, der beim Speichern dem -NAME-Parameter zugewiesen wurde.
Autor: Alexander Dilthey
Quelle:
http://www.aboutwebdesign.de/awd/content/978832689.shtml
Erstmalig veröffentlicht: 07.01.2001
#!/usr/bin/perl -wT use strict; $|++; use CGI qw/:standard /; use CGI::Cookie; # war der user schon mal da, dann hat er ein Cookie, das sein Browser übersandte my $sessionId= cookie('sessionID')? cookie('sessionID'):'none'; my $hiddenInfo = new CGI::Cookie( -name=>'sessionID', -value=>$sessionId, -expires=>'+3M', -domain=>'deine.domain.de' ); . . print redirect( -uri=>$uri, -cookie=>[$hiddenInfo] ); oder print header( -charset=>'iso-8859-1'), -cookie=>[$hiddenInfo] );
Ist eben immer die Frage ob man CGI.pm lieber objektorientiert oder funktional nutzt. Übrigens die Dokumentation zu CGI/Cookie.pm ist lesenswert. Da sind auch Beispiele drin.
Das einlesen von Cookies ohne CGI Modul ist eigentlich ganz einfach. ALLE vom Browser gesendeten Cookies werden genauso wie Formulardaten als ein langer String übergeben. Dieser findet sich in der Umgebungsvariable $ENV{'HTTP_COOKIE'}. Der Unterschied zu Formulardaten besteht darin, das die Name/Wert Paare nicht mit einem Kaufmannsund (&) sondern mit Semikola (;) getrennt sind. Die folgende Subroutine liest alle übergebenen Cookies in das globale Hash %COOKIES ein.
my %COOKIES; sub get_cookies { my @raw_cookies; my ($name, $value); # Rohcookies trennen @raw_cookies = split (/; /,$ENV{'HTTP_COOKIE'}); # Name / Wert Paare trennen foreach (@raw_cookies) { ($name, $value) = split (/=/,$_); $COOKIES{$name} = $value; } }
Zu setzende Cookies werden im HTTP Header an den Browser gesendet. Dazu werden der Subroutine sechs Werte übergeben:
print "Content-type: text/html\n"; &set_cookie('Cookiename', 'Cookiewert', 'Gültiger Pfad', 'Domainname', 'GMT Verfallsdatum', 0); print "\n"; sub set_cookie { print "Set-Cookie: $_[0]=$_[1];"; if ($_[2]) {print " path=$_[2];";} if ($_[4]) {print " expires=$_[4];";} if ($_[3]) {print " domain=$_[3];";} if ($_[5] == 1) {print " secure";} print "\n"; }
Um ein Cookie zu löschen wird das entsprechende Cookie einfach 'überschrieben' und als Verfallsdatum ein Datum in der Vergangenheit angegeben. Daher braucht nur der Cookiename übergeben werden.
print "Content-type: text/html\n"; &delete_cookie( 'Cookiename'); print " \n"; sub delete_cookie { print "Set-Cookie: $_[0]=NULL; expires=Mon, 01-Jan-1996 00:00:00 GMT \n"; }Autor: HeXaChLoR
Veröffentlicht: 09.02.2000
Quelle: http://perlhelp.de/codecookie.xml/index (existiert nicht mehr)