Przedruk z Wikipedii:
- Ciasteczko czyli HTTP Cookie jest to mały fragment tekstu, który serwer wysyła do przeglądarki, a który przeglądarka wysyła z powrotem przy następnych wejściach na stronę.
- Używane jest głównie do utrzymywania sesji np. poprzez wygenerowanie i odesłanie tymczasowego identyfikatora po logowaniu. Może być jednak wykorzystywane szerzej poprzez zapamiętanie dowolnych danych, które można zakodować jako ciąg znaków. Dzięki temu użytkownik nie musi wpisywać tych samych informacji za każdym razem, gdy powróci na tę stronę lub przejdzie z jednej strony na inną.
- Zabezpieczenia przeglądarek pozwalają na odczyt ciasteczek jedynie z domeny, na której zostały utworzone, lub domen niższego poziomu. Czyli ciasteczko ustawione na witrynie w domenie „wikipedia.org” nie zostanie wysłane do „przykład.org”, ale może zostać wysłane do „pl.wikipedia.org”.
- Witryna ustawiająca ciasteczko może dodatkowo określić opcje ciasteczka m.in. kiedy ono wygaśnie (np. po zamknięciu przeglądarki lub o określonej godzinie, określonego dnia), czy jest dostępne tylko poprzez zabezpieczony protokół (HTTPS) oraz czy ma być dostępne dla skryptów uruchamianych w przeglądarce (typowo JavaScript).
- Mechanizm ciasteczek został wymyślony przez byłego pracownika Netscape Communications – Lou Montulliego, a ustandaryzowany w ramach RFC2109 we współpracy z Davidem M. Kristolem w 1997 roku. Bieżący standard opisuje dokument RFC6265 z 2011 roku.
Zastosowanie:
- Ciasteczka różnych rodzajów są stosowane najczęściej po logowaniu do utrzymywania sesji. Mogą jednak przechowywać inne tymczasowe dane jak stan elementów na stronie, czy historię odwiedzanych poprzednio stron (na danej witrynie).
- Umożliwia to tworzenie spersonalizowanych serwisów WWW (np. zapamiętanie stanu menu), obsługi logowania, prostych sond i liczników, „koszyków zakupowych” w internetowych sklepach, a także tworzenie statystyk użyteczności witryny oraz badanie preferencji użytkowników.
- Zastosowanie cookies do sond i liczników internetowych może wyglądać następująco – serwer ustawia ciasteczko informujące, że z danego komputera oddano już głos lub też odwiedzono daną stronę. Na tej podstawie może wykonać odpowiednie operacje i wygenerować dla użytkownika zindywidualizowaną treść strony.
Problemy w stosowaniu:
- Istotne przy stosowaniu ciasteczek jest to, że są to dane tymczasowe – wygasają automatycznie po pewnym czasie i w każdej chwili mogą być usunięte lub zablokowane przez użytkownika. Z tego powodu trwałe dane użytkowników muszą być przechowywane po stronie serwera. Także stosowanie ciasteczka jako „zabezpieczenie” sond i liczników należy traktować jako działanie pomocnicze – wynik takiego licznika może łatwo, nawet nieświadomie, zafałszować użytkownik, który ma trwale zablokowane ciasteczka.
- Dodatkowym problemem jest to, że tak naprawdę rozpoznawana jest przeglądarka internetowa, a nie konkretny użytkownik. Z tego z kolei wynikają dwa problemy:
- Dane zawarte w ciasteczkach nie są przenoszone między urządzeniami użytkownika.
- Istnieje ryzyko przejęcia danych na współdzielonym komputerze (np. w wypadku logowania się w kawiarence internetowej).
- Innym ważnym problemem związanym z bezpieczeństwem jest to, że ciasteczka nie są domyślnie szyfrowane i są za każdym razem wysyłane do serwera.
- Także z tych powodów w 2012 roku Unia Europejska nałożyła na właścicieli witryn obowiązek informowania o stosowaniu ciasteczek co wprowadzono w życie od 2013 roku. Polska implementacja dyrektywy różni się od niektórych modeli zagranicznych brakiem wymogu wyraźnego wyrażenia zgody i akceptacji polityki cookies przez użytkownika końcowego. W praktyce więc stosowane na polskich stronach ostrzeżenia o ciasteczkach pełnią charakter wyłącznie informacyjny.
Sposób działania:
W danych po poleceniu Set-Cookie określone są:
- nazwa - obowiązkowo,
- wartość - obowiązkowo,
- czas ważności danego ciasteczka,
- domena,
- ścieżka dostępu,
- poziom zabezpieczeń.
Właściwości:
- ciasteczka o tej samej nazwie, ale o innych ścieżkach będą nadpisywane.
- maksymalna liczba ciasteczek: 300,
- maksymalna wielkość ciasteczka: 4 kilobajty,
- maksymalna liczba ciasteczek z jednego serwera lub z jednej ścieżki: 20.
Gdy użytkownik ma wyłączoną obsługę cookies, wówczas dane należy przesłać przy użyciu metody GET bądź POST, ale te metody nie są zalecane do przechowywania informacji poufnych.
Ciasteczka są przesyłane za każdym razem co zwiększa ryzyko przechwycenia ich. Aby to zminimalizować należy stosować:
- Web storage – standard W3C dający skryptom JavaScript proste odpowiedniki ciasteczek sesyjnych (sessionStorage), jak i „trwałych” (localStorage). Przy czym – w przeciwieństwie do „trwałych” ciasteczek – dane w „localStorage” nie wygasają automatycznie.
- Indexed Database API – nowszy standard W3C dla zaawansowanych baz danych budowanych w JavaScript.
- Local shared object – stworzone przez Adobe i zwane także „ciasteczkami Flash” (ang. „Flash cookies”), ponieważ używane są przez Adobe Flash.
Ciasteczkami w javascripcie zarządzamy za pomocą poniższych poleceń:
Tworzenie ciasteczka:
var nazwa, wartosc, czas;
document.cookie=nazwa+wartosc+czas;