$

Cookies

Ce sunt Cookie-urile?

Un cookie HTTP sau un modul cookie este un text special, deseori codificat, trimis de un server unui navigator web si apoi trimis inapoi (nemodificat) de catre navigator, de fiecare data cand acceseaza acel server. Cookie-urile sunt folosite pentru autentificare precum si pentru urmarirea comportamentului utilizatorilor; aplicatii tipice sunt retinerea preferintelor utilizatorilor si implementarea sistemului de "cos de cumparaturi".

Termenul "cookie" este un cuvant englez (biscuit, pronuntie: /?ku?ki/). In informatica el este derivat din termenul "magic cookie", un concept des utilizat in IT. In general cuvantul "cookie" cu acest sens este folosit si in alte limbi; doar in terminologia tehnica francofona s-a incercat traducerea lui prin termenul temoin ('martor').

Cookie-urile au creat Ingrijorare din cauza ca ele permit strangerea de informatii despre comportamentul utilizatorilor (in principiu, ce anume pagini web viziteaza si cand). Ca urmare, folosirea lor (si a informatiilor culese) sunt supuse in unele tari unor restrictii legale, printre care Statele Unite ale Americii si tarile UE. Tehnicile de tip "cookie" au fost de asemenea criticate pentru faptul ca identificarea utilizatorilor nu e intotdeauna precisa, ca si pentru faptul ca prin intermediul lor se pot executa atacuri informatice.

Cele mai multe navigatoare moderne permit utilizatorului sa decida daca accepta sau nu cookie-uri. Siturilor care le refuza le vor lipsi insa anumite facilitati - de exemplu, intr-un magazin virtual nu se va mai putea folosi cosul de cumparaturi, daca acesta a fost implementat cu ajutorul cookie-urilor.

Scopul

Cookie-urile sunt folosite de serverele web pentru a putea diferentia utilizatorii si pentru a putea reactiona in functie de actiunile acestora in cadrul unei sesiuni formate din mai multe tranzactii separate. Ele au fost inventate pentru a se putea implementa un cos de cumparaturi virtual: de obicei, utilizatorul mai intai se autentifica (login), apoi navigheaza pe site, adauga sau elimina in voie obiecte din cos, apoi afiseaza continutul cosului, cere calcularea pretului final, se hotaraste sa comande (ori totusi renunta), iar la sfarsit inchide sesiunea (logout).

Autentificarea utilizatorilor fata de server este o alta aplicatie a cookie-urilor; cu ajutorul acestora serverul retine faptul ca utilizatorul s-a autentificat, si ii va permite actiuni specifice celor autentificati.

Unele site-uri folosesc cookie-urile si pentru a permite utilizatorilor sa modifice felul in care afiseaza paginile de web, in functie de preferintele personale, care sunt retinute si intre sesiuni. Se pot modifica si retine in acest fel atat aspecte legate de functionalitatea cat si de afisarea grafica a paginilor. De exemplu, Wikipedia permite utilizatorilor inregistrati sa modifice aspectul paginilor, iar in Google, chiar si utilizatorii neinregistrati pot de exemplu alege cate rezultate sa fie afisate intr-o pagina.

Cookie-urile se folosesc si pentru a urmari activitatea unui utilizator pe un site, sau chiar pe mai multe site-uri, in cazul cookie-urilor "third party" sau a asa-numitilor "web bugs". Urmarirea in cadrul unui site este facuta in scopul obtinerii unor statistici de folosire. In special companiile de publicitate urmaresc activitatea utilizatorilor in cadrul mai multor situri pentru a afla mai exact interesele lor, putand astfel sa decida care anume reclame sa trimita la un anumit moment unui anumit utilizator.

Realizarea

Cookie-urile de obicei contin date fara semnificatie pentru utilizator sau pentru navigatorul sau, dar care pot fi interpretate de server. Navigatorul le primeste si le returneaza serverului nemodificate, introducand astfel o "amintire" a evenimetelor trecute in cererea HTTP, care in sine este atemporal? (altfel spus, fiecare cerere este in principiu un eveniment izolat, fara a avea vreo legatura cu alte cereri HTTP trecute sau viitoare catre acelazi server). Returnand insa un cookie unui server, acesta poate lega cererea actuala de cereri precedente (in care acelasi server a trimis cookie-ul), in acest fel luand nastere o asa numita sesiune. In afara de servere, cookie-urile mai pot fi create si de aplicatii web care ruleaza pe server, comunica cu clientii prin HTTP, si sunt scrise in limbaje de programare cum ar fi Java si C# sau in scripturi ce ruleaza pe server.

Descrierea detaliata a mecanismului sugereaza ca navigatoarele sa poata retine cel putin 300 de cookie-uri de cate 4 kb, si cel putin 20 pentru fiecare server sau domeniu de Internet.

La crearea cookie-ului se poate specifica si data de stergere; in caz contrar, acesta va fi sters la inchiderea navigatorului. Un magazin virtual poate dori sa se retina continutul cosului de cumparaturi intre sesiuni, astfel incat la urmatoarea vizita utilizatorul sa nu trebuiasca sa caute din nou toate produsele. In acest caz, serverul magazinului va crea un cookie cu un termen de stergere ceva mai lung. Doar cookie-urile care au un termen de stergere lung, specificat explicit, vor "supravietui" intre sesiuni, in care caz ele pot fi numite "persistente".

Expirare

Cookie-urile expira, si de aceea nu sunt trimise de catre navigator spre server in conditiile de mai jos:

  • La sfarsitul unei sesiuni (de exemplu, cand este inchis navigatorul) daca acel cookie nu este persistent
  • Daca a fost specificata o data de expirare si data se afla la momentul curent in trecut
  • Daca data expirarii este schimbata (de catre server sau script) intr-o data din trecut
  • Navigatorul sterge cookie-ul la cererea utilizatorului
  • A treia conditie permite unui server sau unui script sa stearga in mod explicit un cookie.

Autentificare

Cookie-urile pot fi folosite de servere pentru a recunoaste utilizatorii autentificati si pentru a modifica paginile trimise in functie de preferintele acestora (personalizare). De exemplu:

  • Utilizatorul introduce numele de utilizator si parola in campurile de editare ale unei pagini si le trimite spre server;
  • Serverul primeste numele de utilizator si parola si le verifics; dacs sunt corecte, trimite o pagina care confirma acest lucru utilizatorului, impreuna cu un cookie; de asemenea, serverul memoreaza perechea nume/cookie (sau doar cookie-ul);
  • La fiecare accesare a unei pagini de pe acel server, navigatorul trimite si cookie-ul impreuna cu cererea; serverul compara cookie-ul primit cu cele memorate, si poate sa decida daca este vorba de un utilizator autentificat sau nu, trimitand pagina potrivita.

Aceasta este metoda folosita de aproape toate siturile.

Personalizarea paginilor

In mod similar autentificarii, serverul afla ce utilizator ii cere o pagina si poate sa o trimita in consecinta, in functie de preferintele exprimate anterior, si care au fost retinute de server. Se pot personaliza pagini chiar in cazul utilizatorilor care nu au un cont pe server: pur si simplu se retin preferintele in cadrul cookie-ului, si la cererile urmatoare, trimiand si cookie-ul, navigatorul trimite si preferintele utilizatorului.

De exemplu, Google retine preferintele utilizatorilor intr-un cookie numit PREF. Acesta e creat cu valori implicite la prima accesare a sitului. Atunci cand utilizatorul intra in pagina de preferinte si alege ceva, serverul trimite o cerere de modificare a cookie-ului, retinand in el noua valoare.

Urmarirea utilizatorilor

Metoda cea mai folosita este urmatoarea:

Daca o cerere nu contine nici un cookie, se presupune ca este prima accesare a unei pagini de pe acel server; acesta creeaza un cookie cu o valoare arbitrara (dar unica) si-l trimite, ampreuna cu pagina solicitata;
De acum incolo, navigatorul va primi impreun? cu cererile si cookie-ul; el va trimite paginile cerute, dar va retine numele paginii cerute, data si ora, precum si valoarea cookie-ului intr-o lista speciala.
Parcurgand aceasta lista, este posibil sa se afle ce pagini (si in ce ordine) au fost vizitate de un anumit utilizator (identificat de un anumit cookie).

Cookie-uri "hird-party"

Imaginile sau alte obiecte continute de o pagina web pot sa fie de fapt pe alt server decat cel pe care este pagina propriu-zisa. Pentru a afisa aceste obiecte, navigatorul le descarca de pe serverele lor, eventual primind si cookie-uri. Acestea se numesc "third party", daca serverul care le-a creat se afla in alt domeniu decat serverul paginii.

Acest fenomen se intampla mai ales in cazul reclamelor. Imaginile publicitare se afla de obicei stocate pe serverele companiei publicitare, in alt domeniu decat pagina web pe care sunt afisate. Daca navigatorul accepta cookie-urile, compania de publicitate poate sa urmareasca activitatea utilizatorului pe mai multe situri (pe toate siturile vizitate, care au imagini ce provin de la acea companie de publicitate). Aceasta se face folosind un URL unic pentru fiecare sit (astfel incat aceeasi imagine afisata pe doua situri are alt URL) sau cu ajutorul campului referer din tranzactia HTTP. Acelasi lucru se poate obtine intercaland in pagina de web imagini invizibile utilizatorului, dar care sunt downloadate de navigator.

Companiile de publicitate au negat permanent ca aceste informatii ar fi folosite si pentru alte scopuri in afara stabilirii unor preferinte ale utilizatorilor.

Multe navigatoare moderne, cum ar fi Internet Explorer, Opera sau Mozilla Firefox, permit utilizatorului sa aleaga blocarea cookie-urilor "third party". Versiunea 6 a Internet Explorer permite si o forma intermediara de blocare: daca third.com trimite un cookie odata cu o imagine de pe o pagina din domeniul first.com, cookie-ul nu este trimis in cazul in care o este nevoie de o imagine de pe acelasi third.com, dar pentru un document din domeniul other.com; daca insa un document oarecare din domeniul initial first.com are nevoie de o imagine de pe third.com, cookie-ul va fi trimis.

Sursa: Wikipedia