E nter.net  


ciasteczka prosto z sieci
Cezary G│owi±ski


C iasteczka (ang. cookies) to mechanizm zwi▒zany ze stronami internetowymi. Pocz▒tkowo ╢rodowisko sieciowe WWW by│o statyczne i nie pozwala│o na ┐adne dzia│ania interaktywne. Z czasem zosta│o to zmienione, a jednym z przyk│ad≤w mog▒ byµ wspomniane ciasteczka. O ich popularno╢ci ╢wiadczyµ mo┐e fakt, ┐e s▒ obs│ugiwane przez popularne przegl▒darki oraz wiΩkszo╢µ serwer≤w informacyjnych. Dlatego z pewno╢ci▒ ka┐dy, kto nawigowa│ po stronach internetowych, musia│ siΩ z nimi zetkn▒µ. CzΩsto nie╢wiadomie, gdy┐ mechanizm ten dzia│a w tle - podobnie jak przy korzystaniu z edytor≤w tekstu mo┐na spotkaµ opcjΩ automatycznego zapisu na dysk pisanego przez nas dokumentu. Operacja ta wykonuje siΩ w tle bez naszego udzia│u, a w jej wyniku na dysku zostaje utworzona aktualna wersja edytowanego tekstu.

Czym jest ciasteczko


Mechanizm ciasteczek jest ╢ci╢le zwi▒zany ze stronami WWW. Zostaje on uruchomiony w momencie odwo│ania siΩ do konkretnej strony, kt≤ra wykorzystuje cookies. Samo ciasteczko to po prostu ma│y "kawa│ek" danych, kt≤re s▒ wysy│ane z serwera WWW do przegl▒darki w nag│≤wku ╢ci▒ganej przez nas strony (HTTP Response Header). Gdy przegl▒darka wykryje takie ciasteczko, to je odczytuje.
Standardowo ciasteczko sk│ada siΩ z kilku parametr≤w. Najwa┐niejszym jest przekazywana do nas zmienna i jej warto╢µ, kt≤ra jest dowolnym ci▒giem znak≤w. Opr≤cz tej informacji g│≤wnej wysy│ane s▒ parametry pomocnicze, kt≤re okre╢laj▒ datΩ wa┐no╢ci oraz ╝r≤d│o pochodzenia, czyli domenΩ i ╢cie┐kΩ na serwerze. Je╢li ciasteczko jest wa┐ne, to przegl▒darka zapisuje go na lokalnym dysku (patrz ramka: "Ciasteczka w przegl▒darkach"). Ma to miejsce w≤wczas, gdy czas ┐ycia ciasteczka jest d│u┐szy ni┐ czas, kt≤ry u┐ytkownik spΩdza na przegl▒daniu danej strony. Jednak nawet ju┐ zapisane ciasteczka po pewnym okre╢lonym czasie trac▒ wreszcie datΩ wa┐no╢ci.
W≤wczas zostaj▒ one usuniΩte. Mo┐e siΩ r≤wnie┐ zdarzyµ, ┐e przys│ane zostanie ciasteczko, kt≤rego nazwa ju┐ istnieje - w≤wczas nowe zostanie zapisane zastΩpuj▒c stare. Rzecz jasna nie ka┐da odwiedzana przez nas strona jest wyposa┐ona w ciasteczka. Ciasteczka mog▒ zawieraµ i przekazywaµ praktycznie dowolne dane. W│a╢nie owa dowolno╢µ spowodowa│a, ┐e mechanizm ten zyska│ sobie du┐▒ popularno╢µ. Z za│o┐enia ciasteczka traktowane s▒ jako dane, czyli ci▒g znak≤w. Zatem informacja przez nie przekazywana nie mo┐e byµ wykonana jako kod.
Nie ma w≤wczas zagro┐enia, ┐e zostanie do nas wys│any niepo┐▒dany program, a tym bardziej wirus. Takiego niebezpiecze±stwa nie ma. Mechanizm ciasteczek nie ma te┐ dostΩpu do informacji na naszym dysku w komputerze. Jedynie co mo┐e wykonaµ przegl▒darka, to zapisaµ pewne informacje zawarte w ciasteczku, a nastΩpnie w razie potrzeby odczytaµ je ponownie. Ale i ten spos≤b dostΩpu ma powa┐ne ograniczenia. Podstawowe ograniczenie dotyczy rozmiaru ciasteczka, kt≤re nie mo┐e przekraczaµ 4 kB (wraz z na-g│≤wkiem). Pozosta│e ograniczenia dotycz▒ przestrzeni, w kt≤rej s▒ zapisywane ciasteczka. Przyk│adowo Navigator mo┐e zapamiΩtaµ do 300 ciasteczek z r≤┐nych ╝r≤de│. Ma to na celu ochronΩ dysku przed zapisaniem niezliczonej liczby ciasteczek, co przy upartym nawigowaniu po sieci by│oby mo┐liwe. Dla ka┐dego nastΩpnego ostatnio u┐ywane ciasteczko jest usuwane. Ponadto dla ka┐dej domeny mo┐na zapamiΩtaµ tylko 20 r≤┐nych ciasteczek. Mechanizm cookies nie ogranicza siΩ do przekazywania informacji tylko w jedn▒ stronΩ. A to dlatego, ┐e przegl▒darka przed wys│aniem ┐▒dania ╢ci▒gniΩcia strony (HTTP Request Header) do serwera WWW najpierw przegl▒da bazΩ ciasteczek, kt≤re zgromadzi│a i w przypadku dopasowania kt≤rego╢ z nich wysy│a go w nag│≤wku wspomnianego ┐▒dania. Zatem mamy tu do czynienia z komunikacj▒ dwukierunkow▒.
Dzia│a to w ten spos≤b, ┐e gdy u┐ytkownik wybierze kt≤re╢ hiperpo│▒czenie do strony WWW (zwykle klikaj▒c w nie), to przegl▒darka por≤wna ten adres z baz▒ ciasteczek. Je┐eli ma ciasteczko, kt≤rego domena i ╢cie┐ka pasuj▒ do tego URL-a, to wy╢le jego zawarto╢µ do serwera wraz z ┐▒daniem przys│ania strony. Odes│anie jest mo┐liwe dziΩki temu, ┐e w przychodz▒cych ciasteczkach wysy│ane s▒ informacje o serwerze, kt≤ry je utworzy│. Przegl▒darka zna zatem nazwΩ tego serwera oraz ╢cie┐kΩ, do kt≤rej odnosi siΩ zawarto╢µ ciasteczka. W rezultacie tylko ten serwer, kt≤ry utworzy│ ciasteczko, mo┐e z powrotem otrzymaµ jego zawarto╢µ. Natomiast inne serwery, ze wzglΩdu na to, ┐e adresy sieciowe s▒ unikalne, nie bΩd▒ mia│y dostΩpu do zapisanych w ciasteczkach danych.

Zastosowanie


Ciasteczka charakteryzuj▒ siΩ tym, ┐e za ich pomoc▒ mog▒ byµ przekazywane praktycznie dowolne tre╢ci informacyjne w postaci ci▒g≤w znak≤w. Mechanizm ten zdoby│ w zwi▒zku z tym du┐▒ popularno╢µ w zastosowaniach zwi▒zanych z usprawnianiem us│ug dostΩpnych na stronach WWW.
Jednym z najbardziej powszechnych zastosowa± ciasteczek s▒ elektroniczne zakupy w sieci. W tym wypadku ciasteczka s▒ wykorzystywane przy realizacji "wirtualnego koszyka". Wybieraj▒c okre╢lony towar powodujemy przes│anie ciasteczka z jego identyfikatorem.
DziΩki temu na lokalnym dysku tworzona jest chwilowa pamiΩµ towar≤w, kt≤re zamawiamy. I na tyle skuteczna, ┐e je╢li przerwiemy lub utracimy po│▒czenie z witryn▒ sklepu, to mo┐emy do niej powr≤ciµ bez utraty zam≤wionych ju┐ towar≤w i sfinalizowaµ transakcjΩ. Kolejnym wa┐nym zastosowaniem cookies jest tworzenie interakcji u┐ytkownika ze stronami WWW. DziΩki ciasteczkom serwer mo┐e przygotowaµ okre╢lon▒ stronΩ zgodnie z wymaganiami u┐ytkownika.
Mo┐liwa jest r≤wnie┐ reakcja na okre╢lone dzia│ania, ze zmian▒ wygl▒du strony w│▒cznie. Opr≤cz tego ciasteczka pozwalaj▒ rozr≤┐niaµ kolejne wizyty w danym o╢rodku. Generalnie mo┐na powiedzieµ, ┐e ciasteczka s▒ bardzo u┐ytecznym narzΩdziem tworzenia zmiennych w ╢rodowisku WWW przekazywanych miΩdzy klientem a serwerem przy wykorzystaniu protoko│u HTTP.

Ciasteczka w przegl▒darkach


Popularne przegl▒darki Netscape Navigator oraz Microsoft Internet Explorer obs│uguj▒ mechanizm ciasteczek. Standardowe ustawienia tych przegl▒darek pozwalaj▒ bez przeszk≤d korzystaµ z tego mechanizmu i zapisywaµ przychodz▒ce ciasteczka na dysku lokalnym. Jednak u┐ytkownik ma mo┐liwo╢µ takiego ustawienia opcji, aby by│ ostrzegany przed wysy│anymi do niego ciasteczkami. W≤wczas przegl▒darka przechwytuje ciasteczko i pyta, czy je akceptujemy lub czy je odrzucamy. PamiΩtajmy jednak o tym, ┐e je╢li nie zaakceptujemy ciasteczka, to mo┐e siΩ zdarzyµ, ┐e dana strona bΩdzie dzia│aµ niepoprawnie.

Obydwie przegl▒darki daj▒ mo┐liwo╢µ w│▒czenia funkcji ╢ledz▒cej aktywno╢µ ciasteczek i wy╢wietlaj▒cej odpowiednie komunikaty z ostrze┐eniami. Korzystaj▒c z Navigtora nale┐y wybraµ w menu Options opcjΩ Network Preferences, a nastΩpnie zak│adkΩ Protocols. W okienku nale┐y zaznaczyµ opcjΩ Accepting a Cookie.
Korzystaj▒c z Internet Explorera nale┐y wybraµ z menu Widok opcjΩ Opcje, a nastΩpnie zak│adkΩ Zaawansowane. W okienku nale┐y zaznaczyµ opcjΩ Ostrzegaj przed zaakceptowaniem "cookies". Po powy┐szych zabiegach w przypadku, gdy serwer WWW spr≤buje pozostawiµ na dysku lokalnym informacjΩ w postaci ciasteczek, to na ekranie zostanie wy╢wietlony odpowiedni komunikat ostrzegawczy wraz z przyciskami, kt≤re pozwol▒ zadecydowaµ, czy zgadzamy siΩ na ich zapisanie. Przychodz▒ce ciasteczka zapisywane s▒ na dysku lokalnym. Navigator zapisuje ciasteczka w pliku cookie.txt, kt≤ry znajduje siΩ w g│≤wnym katalogu przegl▒darki;
w zbiorze tym znajduj▒ siΩ wszystkie informacje dotycz▒ce ciasteczek. Z kolei Internet Explorer zapisuje dane o ciasteczkach w oddzielnym podkatalogu o nazwie Cookies w katalogu Windows.

Sk│adnia ciasteczek


Sk│adnia ciasteczka wysy│anego przez serwer WWW w nag│≤wku strony HTTP Response Header jest nastΩpuj▒ca (wielkimi literami podane s▒ fragmenty, kt≤re zale┐▒ od autora ciasteczka):

Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure

Znaczenia poszczeg≤lnych sk│adowych:

  • NAME=VALUE - NAME jest nazw▒ ciasteczka, za╢ VALUE jego zawarto╢ci▒ informacyjn▒. Jest to g│≤wna czΩ╢µ ciasteczka. Obydwa parametry NAME i VALUE mog▒ byµ dowolnym tekstem wymy╢lonym przez jego autora.
  • expires=DATE - DATE jest to data, po kt≤rej ciasteczko traci wa┐no╢µ (podawana w czasie GMT). Je╢li ta zmienna nie jest ustawiona, to w momencie zako±czenia sesji ciasteczko przestaje istnieµ.
  • path=PATH - PAHT jest to ╢cie┐ka w domenie, do kt≤rej odnosi siΩ ciasteczko. Informuje ona przegl▒darkΩ, ┐eby wysy│aµ zawarto╢µ ciasteczka tylko do URL w tej ╢cie┐ce oraz ewentualnie w jej podkatalogach.
  • domain=DOMAIN_NAME - DOMAIN_NAME to nazwa domeny, kt≤ra utworzy│a ciasteczko i do kt≤rej mo┐na je odes│aµ.
  • secure - ten fragment sk│adni nak│ada warunek, aby przy korzystaniu z tego ciasteczka po│▒czenie by│o bezpieczne.

Je╢li teraz odwo│amy siΩ do jakiego╢ adresu URL to przegl▒darka sprawdzi, czy mo┐e do-pasowaµ do niego kt≤re╢ z zapisanych ciasteczek. Je╢li tak, to jego zawarto╢µ w postaci pary NAME=VALUE wysy│a w ┐▒daniu HTTP Request Header do serwera WWW:

Cookie: NAME1=VALUE1; NAME2=VALUE2; ...

Zasada dzia│ania mechanizmu ciasteczek

(c) Copyright LUPUS