Co to są pliki „cookie”?

Aby wyjaśnić powód i istotę działania plików cookie, trzeba na początku wspomnieć o zasadzie działania protokołu HTTP (ang. hypertext transfer protocol), czyli mechanizmu działania popularnej sieci WWW.

Protokół został zaprojektowany do przekazywania tak zwanych dokumentów hypertekstowych, czyli takich, które zawierają linki kierujące do innych treści. Dlatego mechanizm działa tak, że od strony przeglądarki wysyłane jest żądanie (ang. request), które trafia do serwera WWW. Następnie serwer wysyła odpowiedź na dane żądanie w postaci odpowiednio „opakowanego” dokumentu (np. strony WWW).

Pierwotnie strony WWW zawierały głównie treści tekstowe. Jednak dzięki możliwości osadzania treści multimedialnych strony WWW zdobyły taką popularność, że bardzo często mówiąc internet mamy na myśli właśnie pajęczynę stron WWW.

Rozwinęły się technologie umożliwiające uruchamianie w sieci WWW aplikacji takich jak wyszukiwarki, sklepy, bazy danych, portale, mapy interaktywne, repozytoria multimediów itd. Jednak ogólny mechanizm pozostał niezmieniony. Pomiędzy kolejnymi żądaniami i odpowiedziami serwera - przesyłanymi stronami – połączenie pomiędzy przeglądarką a serwerem internetowym nie jest utrzymywane.

Możliwość identyfikacji użytkownika korzystającego ze stron WWW jest przez to utrudniona. Nie zawsze wiadomo od którego użytkownika pochodzi żądanie wyświetlenia danej strony intenetowej. Co bywa problemem dla aplikacji internetowych takich jak na przykład sklepy internetowe, które powinny zapamiętywać zawartość koszyka każdego użytkownika.

Jedną z technik rozwiązywania problemów identyfikacji użytkownika są tak zwane pliki „cookie” czyli ciasteczka. Są to pliki przechowujące relatywnie krótkie informacje tekstowe – do 255 znaków (co jest wystarczające do zapamiętania na przykład identyfikatora sesji przeglądania sklepu internetowego itp.).

Pliki „cookie” są zapisywane przez przeglądarkę internetową na komputerze użytkownika stron WWW. Polecenie zapisania odpowiedniego pliku cookie jest przesyłane wraz z odpowiedzią serwera. Może też być wywołane za pomocą, działającego na stronie WWW, skryptu JavaScript. Po zapisaniu „cookie”, przeglądarka za każdym razem, kiedy wysyła nowe żądanie do serwera WWW (np. kiedy po raz kolejny otwiera stronę), pliki cookie są odsyłane do tego serwera. Zawartość plików jest dostępna dla serwera. Dzięki temu aplikacje WWW mogą rozróżniać użytkowników a także przechowywać krótkie informacje po stronie przeglądarki internetowej.

Atrybuty „cookie”

Podstawowymi atrybutami (danymi przechowywanymi w cookie) są nazwa i wartość ciasteczka. Dodatkowo występuje data wygaśnięcia ciasteczka, która określa kiedy przeglądarka powinna usunąć ciasteczko ze swojej pamięci. Innymi atrybutami są domena internetowa i ścieżka. Ograniczają one dostęp serwerów do danego ciasteczka. Cookie jest odsyłane tylko do serwerów zgodnych z domeną w przypadku żądań stron zgodnych z daną ścieżką.

Kolejnymi dostępnymi atrybutami są oznaczenia „Secure” i „HttpOnly”. W przypadku użycia oznaczenia „Secure” cookie będą odsyłane tylko w połączeniach za pomocą protokołu SSL (https). HttpOnly informuje przeglądarkę, że ciasteczko nie powinno być dostępne z poziomu skryptów takich jak np. JavaScript.

Więcej informacji:

Do czego używane są pliki „cookie”?

Przeznaczenie cookie nie jest określone. Mechanizm „ciasteczek” ma pewne możliwości, ale cel jego wykorzystania określają programiści.

Można zauważyć, że pliki cookie najczęściej wykorzystywane są do obsługi mechanizmów potrzebnych do działania aplikacji WWW. W szczególności do przechowywania tak zwanego identyfikatora sesji, czyli oznaczenia umożliwiającego serwerowi WWW rozróżnianie konkretnych użytkowników pośród jednoczesnych zapytań pochodzących od wielu użytkowników.

Dzięki powyższemu możliwe jest stworzenie mechanizmów autoryzacji (czyli logowania się) użytkowników. Szeroko stosuje się wspomniane mechanizmy w systemach bankowych, poczty elektronicznej, w portalach społecznościowych przy logowaniu się do określonego konta itp.

Strony WWW, dzięki mechanizmowi cookie, mogą zapamiętywać kolejne wybory użytkownika. W ten sposób mogą działać np. mechanizmy koszyków w sklepach internetowych.

Innym powodem używania plików cookie może być chęć tworzenia mechanizmów personalizacji. Niektóre z systemów mogą na przykład próbować wyświetlać treść danej witryny przygotowaną według przewidywanych zainteresowań użytkownika.

Pliki cookie są szeroko stosowane do tworzenia rozmaitych systemów zbierających statystyki. Ruch poszczególnych użytkowników może być śledzony i analizowany. W oparciu o powyższe oprócz personalizacji możliwa staje się próba tak zwanego „targetowania” reklamy, czyli wyświetlania treści reklamowych, które w założeniach mogą zainteresować danego użytkownika.

Niektórzy mogą obawiać się, że dane przechowywane w plikach cookie mogą w jakiś sposób zostać użyte na szkodę użytkownika. Wspomniane obawy są brane pod uwagę przez twórców programów komputerowych takich jak przeglądarki internetowe, ale jednocześnie konieczne jest zapewnienie funkcjonalności potrzebnej do działania aplikacji internetowych. Obiektem ochrony staje się prywatność ruchu generowanego przez poszczególnych użytkowników oraz dane przechowywane w plikach cookie.

Warto zapoznać się z możliwościami przeglądarek intranetowych związanymi z ochroną prywatności oraz ochroną danych danych zapisanych w plikach cookie.

Zabezpieczenia cookie

Pliki cookie zawierają tylko dane tekstowe nie mogą zawierać np. plików wykonywalnych. Dlatego nie mogą przechowywać na przykład wirusów komputerowych, czy programów typu malware.

Ich zawartość może jednak stać się obiektem ataku hakerskiego mającego na celu przejęcie sesji (ang. session hijacking) lub odczytanie danych poufnych. Niestety nie można wykluczyć istnienia dziur w zabezpieczeniach przeglądarek umożliwiających wspomniane działanie.

Podstawowym zabezpieczeniem ciasteczek jest ograniczenie ich przeznaczenia do określonej domeny internetowej, tak że pozostałe serwery internetowe nie mają dostępu do danych zapisanych w ciasteczkach. Innymi zabezpieczeniami są wspomniane atrybuty „Secure” i „HttpOnly”.