Protokół HTTP wykorzystywany do przesyłania stron WWW i komunikowania się
z serwerami przechowującymi je jest bezstanowy. Oznacza to, że każda kolejna strona
WWW jest pobierana z serwera całkowicie niezależnie od poprzednich, a serwer nie ma
najmmejszego pojęcia, że kolejne operacje pobrania stron są ze sobą w jakikolwiek
sposób powiązane.
Większość serwisów WWW wymaga jednak, by serwer był w stanie powiązać ze sobą
strony otwierane przez konkretnego jednego użytkownika. Na przykład serwis bankowy
na jednej stronie WWW umożliwia zalogowanie się użytkownika, na drugiej
wyświetla stan konta, a na trzeciej pozwala założyć lokatę. Użytkownik musi mieć możliwość
przechodzenia pomiędzy poszczególnymi modułami serwisu i spodziewa się,
że operacje wykonane na poprzedniej stronie będą miały swoje odwzorowanie na kolejnej.
Niestety, sam protokół tego nie umożliwia.
W takiej sytuacji narodziły się ciasteczka. Wprowadzone początkowo przez firmę
Netscape, szybko stały się obowiązującym powszechnie standardem, gdyż rozwiązywały
całkowicie wyżej opisany problem w prosty w implementacji sposób.
Ciasteczka to niewielka porcja informacji identyfikowana nazwą oraz domeną serwera
HTTP, który przysłał tę informację. W ciasteczku zapisana może być liczba,
tekst lub dowolny inny ciąg danych, zrozumiały dla serwera HTTP. Ciasteczko jest
tworzone na żądanie serwera HTTP: gdy skrypt generujący stronę WWW zdecyduje się
zapisać do przyszłego wykorzystania jakąś wartość powiązaną z sesją, dodaje na początku
kodu odpowiednie pole nagłówkowe, a serwer przesyła je - wraz z resztą kodu
strony - przeglądarce, której obowiązkiem jest zapisanie otrzymanych danych. Z kolei
wraz z każdym kolejnym odwołaniem do serwera przeglądarka musi przesłać (wśród
nagłówków towarzyszących odwołaniu) wszystkie ciasteczka dotychczas utworzone
przez ten serwer - dzięki temu podczas komponowania kodu kolejnej strony skrypt
działający na serwerze będzie dysponował potrzebnymi danymi niezależnie od tego,
czy między odwołaniami minęła sekunda, czy minuta, ile w tym czasie innych odwołań
serwer obsłużył, a nawet czy między odwołaniami serwer nie został zatrzymany i ponownie
uruchomiony.
Choć w założeniu ciasteczka miały być bezpieczne - skrypt otrzymuje jedynie te,
które zostały utworzone przez serwer, na którym dany skrypt działa - szybko zostały
wykorzystane również do niecnych celów. Najpopularniejszym zastosowaniem niezgodnym
z interesem użytkowników jest śledzenie sposobu przeglądania stron internetowych
przez wszelkiego rodzaj u moduły reklamowe: choć są one umieszczone na
różnych stronach WWW, zazwyczaj sama reklama pobierana jest z serwera reklamodawcy,
który również może zapamiętywać i odtwarzać własne ciasteczka. Jeśli w takich
ciasteczkach zapamiętane zostaną na przykład adresy stron odwiedzanych przez użytkownika,
serwer może dostosować reklamy tak, by ściśle pasowały do profilu zainteresowań
internauty.
Czy to jest niebezpieczne? To zależy. Na pewno jest to naruszenie prywatności w sensie
zbierania danych handlowych bez wiedzy i zgody zainteresowanego. Z drugiej strony
jeśli przeglądarka nie ma jakichś ewidentnych błędów, które mógłby wykorzystać
sprytny skrypt JavaScript, pobierając bardziej poufne dane (adresy pocztowe, obce
ciasteczka, hasła), dane zbierane tą metodą nie przydadzą się do niczego poza wymienionym
profilowaniem reklam.
Każda przyzwoita przeglądarka WWW jest obecnie wyposażona w mechanizmy
umożliwiające zwiększenie bezpieczeństwa korzystania z ciasteczek . Wybranym serwerom
WWW można odebrać prawo tworzenia ciasteczek w ogóle, można też włączyć
tryb, w którym każda operacja zapisania ciasteczka w buforze przeglądarki będzie
musiała zostać potwierdzona przez użytkownika. Przeglądarki mogą też kasować ciasteczka
przy kończeniu pracy z komputerem (dzięki czemu strony WWW ich wymagające
działają poprawnie, lecz niemożliwe staje się zapamiętywanie danych w ciasteczkach
na dłużej). W ostateczności można całkowicie wyłączyć mechanizm ciasteczek,
jednak uniemożliwi to działanie wielu rozbudowanych stron WWW (sond internetowych,
forów dyskusyjnych, stron bankowych).
Warto też wspomnieć, że to wszystko, co da się zrobić za pomocą ciasteczek, obecnie
bez problemów można zrealizować bez ich użycia. Wzrost mocy obliczeniowej serwerów
i spadek ich cen spowodowały, że obciążanie serwera zapamiętywaniem wszystkich
sesji użytkowników ( i parametrów z nimi związanych) nie jest już takim problemem
jak dawniej. Nowoczesne języki skryptowe ułatwiające dynamiczne generowanie kodu
HTML (na przykład PHP) posiadają wręcz wbudowane mechanizmy obsługi sesji
klienckich oraz przypisanych im zmiennych dowolnego typu. Bronienie się przed takimi
technikami jest zdecydowanie trudniejsze niż panowanie nad ciasteczkami , które
stanowią swego rodzaju "mniejsze zło".
Źródła i Literatura:
Radosław Sokół - "Jak pozostać anonimowym w sieci" -
Omijaj natrętów w sieci- chroń swoje dane osobowe!, Wydawnictwo Helion 2015, ISBN: 978-83-283-066 0-8.
Polish language edition published by HELION S.A. Copyright© 2015.
Copyright© 2015 Wydawnictwo HELION S.A
WWW: http:pl/helion.pl (księgarnia internetowa, katalog książek)
Copyright© 2015 Wydawnictwo HELION S.A
WWW: http:pl/helion.pl (księgarnia internetowa, katalog książek)