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 și apoi trimis înapoi (nemodificat) de către navigator, de fiecare dată când accesează acel server. Cookie-urile sunt folosite pentru autentificare precum și pentru urmărirea comportamentului utilizatorilor; aplicații tipice sunt reținerea preferințelor utilizatorilor și implementarea sistemului de „coș de cumpărături”.
Termenul „cookie” este un cuvânt englez (biscuit, pronunție: /ˈkuˌki/). În informatică el este derivat din termenul „magic cookie”, un concept des utilizat în IT. În general cuvântul „cookie” cu acest sens este folosit și în alte limbi; doar în terminologia tehnică francofonă s-a încercat traducerea lui prin termenul témoin („martor”).
Cookie-urile au creat îngrijorare din cauză că ele permit strângerea de informații despre comportamentul utilizatorilor (în principiu, ce anume pagini web vizitează și când). Ca urmare, folosirea lor (și a informațiilor culese) sunt supuse în unele țări unor restricții legale, printre care Statele Unite ale Americii și țările UE. Tehnicile de tip „cookie” au fost de asemenea criticate pentru faptul că identificarea utilizatorilor nu e întotdeauna precisă, ca și pentru faptul că prin intermediul lor se pot executa atacuri informatice.
Cele mai multe navigatoare moderne permit utilizatorului să decidă dacă acceptă sau nu cookie-uri. Siturilor care le refuză le vor lipsi însă anumite facilități - de exemplu, într-un magazin virtual nu se va mai putea folosi coșul de cumpărături, dacă acesta a fost implementat cu ajutorul cookie-urilor.
Scopul
Cookie-urile sunt folosite de serverele web pentru a putea diferenția utilizatorii și pentru a putea reacționa în funcție de acțiunile acestora în cadrul unei sesiuni formate din mai multe tranzacții separate. Ele au fost inventate pentru a se putea implementa un coș de cumpărături virtual: de obicei, utilizatorul mai întâi se autentifică (login), apoi navighează pe site, adaugă sau elimină în voie obiecte din coș, apoi afișează conținutul coșului, cere calcularea prețului final, se hotărăște să comande (ori totuși renunță), iar la sfârșit închide sesiunea (logout).
Autentificarea utilizatorilor față de server este o altă aplicație a cookie-urilor; cu ajutorul acestora serverul reține faptul că utilizatorul s-a autentificat, și îi va permite acțiuni specifice celor autentificați.
Unele site-uri folosesc cookie-urile și pentru a permite utilizatorilor să modifice felul în care afișează paginile de web, în funcție de preferințele personale, care sunt reținute și între sesiuni. Se pot modifica și reține în acest fel atât aspecte legate de funcționalitatea cât și de afișarea grafică a paginilor. De exemplu, Wikipedia permite utilizatorilor înregistrați să modifice aspectul paginilor, iar în Google, chiar și utilizatorii neînregistrați pot de exemplu alege câte rezultate să fie afișate într-o pagină.
Cookie-urile se folosesc și pentru a urmări activitatea unui utilizator pe un site, sau chiar pe mai multe site-uri, în cazul cookie-urilor „third party” sau a așa-numiților „web bugs”. Urmărirea în cadrul unui site este făcută în scopul obținerii unor statistici de folosire. În special companiile de publicitate urmăresc activitatea utilizatorilor în cadrul mai multor situri pentru a afla mai exact interesele lor, putând astfel să decidă care anume reclame să trimită la un anumit moment unui anumit utilizator.
Realizarea
Cookie-urile de obicei conțin date fără semnificație pentru utilizator sau pentru navigatorul său, dar care pot fi interpretate de server. Navigatorul le primește și le returnează serverului nemodificate, introducând astfel o „amintire” a evenimetelor trecute în cererea HTTP, care în sine este atemporală (altfel spus, fiecare cerere este în principiu un eveniment izolat, fără a avea vreo legătură cu alte cereri HTTP trecute sau viitoare către același server). Returnând însă un cookie unui server, acesta poate lega cererea actuală de cereri precedente (în care același server a trimis cookie-ul), în acest fel luând naștere o așa numită sesiune. În afară de servere, cookie-urile mai pot fi create și de aplicații web care rulează pe server, comunică cu clienții prin HTTP, și sunt scrise în limbaje de programare cum ar fi Java și C# sau în scripturi ce rulează pe server.
Descrierea detaliată a mecanismului sugerează ca navigatoarele să poată reține cel puțin 300 de cookie-uri de câte 4 kb, și cel puțin 20 pentru fiecare server sau domeniu de Internet.
La crearea cookie-ului se poate specifica și data de ștergere; în caz contrar, acesta va fi șters la închiderea navigatorului. Un magazin virtual poate dori să se rețină conținutul coșului de cumpărături între sesiuni, astfel încât la următoarea vizită utilizatorul să nu trebuiască să caute din nou toate produsele. În acest caz, serverul magazinului va crea un cookie cu un termen de ștergere ceva mai lung. Doar cookie-urile care au un termen de ștergere lung, specificat explicit, vor „supraviețui” între sesiuni, în care caz ele pot fi numite „persistente”.
Expirare
Cookie-urile expiră, și de aceea nu sunt trimise de către navigator spre server în condițiile de mai jos:
- La sfârșitul unei sesiuni (de exemplu, când este închis navigatorul) dacă acel cookie nu este persistent
- Dacă a fost specificată o dată de expirare și data se află la momentul curent în trecut
- Dacă data expirării este schimbată (de către server sau script) într-o dată din trecut
- Navigatorul șterge cookie-ul la cererea utilizatorului
- A treia condiție permite unui server sau unui script să șteargă în mod explicit un cookie.
Autentificare
Cookie-urile pot fi folosite de servere pentru a recunoaște utilizatorii autentificați și pentru a modifica paginile trimise în funcție de preferințele acestora (personalizare). De exemplu:
- Utilizatorul introduce numele de utilizator și parola în câmpurile de editare ale unei pagini și le trimite spre server;
- Serverul primește numele de utilizator și parola și le verifică; dacă sunt corecte, trimite o pagină care confirmă acest lucru utilizatorului, împreună cu un cookie; de asemenea, serverul memorează perechea nume/cookie (sau doar cookie-ul);
- La fiecare accesare a unei pagini de pe acel server, navigatorul trimite și cookie-ul împreună cu cererea; serverul compară cookie-ul primit cu cele memorate, și poate să decidă dacă este vorba de un utilizator autentificat sau nu, trimițând pagina potrivită.
Aceasta este metoda folosită de aproape toate siturile.
Personalizarea paginilor
În mod similar autentificării, serverul află ce utilizator îi cere o pagină și poate să o trimită în consecință, în funcție de preferințele exprimate anterior, și care au fost reținute de server. Se pot personaliza pagini chiar în cazul utilizatorilor care nu au un cont pe server: pur și simplu se rețin preferințele în cadrul cookie-ului, și la cererile următoare, trimițând și cookie-ul, navigatorul trimite și preferințele utilizatorului.
De exemplu, Google reține preferințele utilizatorilor într-un cookie numit PREF. Acesta e creat cu valori implicite la prima accesare a sitului. Atunci când utilizatorul intră în pagina de preferințe și alege ceva, serverul trimite o cerere de modificare a cookie-ului, reținând în el noua valoare.
Urmărirea utilizatorilor
Metoda cea mai folosită este următoarea:
Dacă o cerere nu conține nici un cookie, se presupune că este prima accesare a unei pagini de pe acel server; acesta creează un cookie cu o valoare arbitrară (dar unică) și-l trimite, împreună cu pagina solicitată;
De acum încolo, navigatorul va primi împreună cu cererile și cookie-ul; el va trimite paginile cerute, dar va reține numele paginii cerute, data și ora, precum și valoarea cookie-ului într-o listă specială.
Parcurgând această listă, este posibil să se afle ce pagini (și în ce ordine) au fost vizitate de un anumit utilizator (identificat de un anumit cookie).
Cookie-uri „third-party”
Imaginile sau alte obiecte conținute de o pagină web pot să fie de fapt pe alt server decât cel pe care este pagina propriu-zisă. Pentru a afișa aceste obiecte, navigatorul le descarcă de pe serverele lor, eventual primind și cookie-uri. Acestea se numesc „third party”, dacă serverul care le-a creat se află în alt domeniu decât serverul paginii.
Acest fenomen se întâmplă mai ales în cazul reclamelor. Imaginile publicitare se află de obicei stocate pe serverele companiei publicitare, în alt domeniu decât pagina web pe care sunt afișate. Dacă navigatorul acceptă cookie-urile, compania de publicitate poate să urmărească 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 încât aceeași imagine afișată pe două situri are alt URL) sau cu ajutorul câmpului referer din tranzacția HTTP. Același lucru se poate obține intercalând în pagina de web imagini invizibile utilizatorului, dar care sunt downloadate de navigator.
Companiile de publicitate au negat permanent că aceste informații ar fi folosite și pentru alte scopuri în afara stabilirii unor preferințe ale utilizatorilor.
Multe navigatoare moderne, cum ar fi Internet Explorer, Opera sau Mozilla Firefox, permit utilizatorului să aleagă blocarea cookie-urilor „third party”. Versiunea 6 a Internet Explorer permite și o formă intermediară de blocare: dacă third.com trimite un cookie odată cu o imagine de pe o pagină din domeniul first.com, cookie-ul nu este trimis în cazul în care o este nevoie de o imagine de pe același third.com, dar pentru un document din domeniul other.com; dacă însă un document oarecare din domeniul inițial first.com are nevoie de o imagine de pe third.com, cookie-ul va fi trimis.
Sursa: Wikipedia