Cookies ( în engleză cookie , lit. - „cookie”) – o mică bucată de date trimisă de un server web și stocată pe computerul utilizatorului . Clientul web (de obicei un browser web ) trimite această bucată de date către serverul web ca parte a unei solicitări HTTP ori de câte ori încearcă să deschidă o pagină pe site-ul corespunzător . Este folosit pentru a salva date din partea utilizatorului, în practică este de obicei folosit pentru [1] :
Suportul de browser pentru cookie-uri (acceptarea, salvarea și transferul ulterior al cookie-urilor stocate pe server) este cerut de multe site-uri cu restricții de acces, majoritatea magazinelor online [2] . Personalizarea designului și comportamentului multor site-uri web în funcție de preferințele individuale ale utilizatorului se bazează și pe cookie-uri [1] .
Cookie-urile sunt ușor de interceptat și falsificat (de exemplu, pentru a obține acces la un cont) dacă utilizatorul folosește o conexiune necriptată la server. La risc sunt utilizatorii care accesează internetul folosind puncte de acces Wi-Fi publice și nu folosesc mecanisme precum SSL și TLS . Criptarea rezolvă și alte probleme legate de securitatea datelor transmise.
Majoritatea browserelor moderne permit utilizatorilor să aleagă dacă acceptă sau nu cookie-uri, dar dezactivarea acestora face ca unele site-uri web să fie inutilizabile. În plus, conform legilor unor țări (de exemplu, conform regulamentului Uniunii Europene din 2016, vezi regulamentul general privind protecția datelor ), site-urile sunt obligate să solicite consimțământul utilizatorului înainte de a seta un cookie.
Cookie-urile sunt folosite de serverele web pentru a identifica utilizatorii și pentru a stoca date despre aceștia.
De exemplu, dacă site-ul este autentificat folosind cookie-uri, atunci, după ce utilizatorul își introduce datele pe pagina de autentificare, cookie-urile permit serverului să-și amintească că utilizatorul a fost deja identificat și are permisiunea de a accesa serviciile și operațiunile relevante [1] ] .
Multe site-uri folosesc, de asemenea, cookie-uri pentru a salva preferințele utilizatorului. Aceste setări pot fi folosite pentru personalizare, care include alegerea aspectului și a funcționalității. De exemplu, Wikipedia permite utilizatorilor autorizați să aleagă designul site-ului. Motorul de căutare Google permite utilizatorilor (inclusiv celor care nu sunt înregistrați cu acesta) să aleagă numărul de rezultate de căutare afișate pe o singură pagină [3] .
Cookie-urile sunt, de asemenea, folosite pentru a urmări activitatea utilizatorului pe site. De regulă, acest lucru se face în scopul colectării de statistici, iar companiile de publicitate, pe baza unor astfel de statistici, formează profiluri de utilizator anonime pentru o direcționare mai precisă a reclamei [4] .
Din punct de vedere tehnic, cookie-urile sunt bucăți de date care sunt inițial trimise de un server web către un browser. La fiecare vizită ulterioară a site-ului, browserul le trimite înapoi la server. Fără un cookie, fiecare vizualizare a paginii web este o acțiune izolată, fără legătură cu navigarea altor pagini de pe același site, cu același cookie, puteți identifica relația dintre vizualizarea diferitelor pagini. Pe lângă faptul că sunt trimise de un server web, cookie-urile pot fi create prin limbaje de scripting , cum ar fi JavaScript , dacă sunt acceptate și activate în browser.
Specificațiile [5] [6] specifică sumele minime pe care browserele trebuie să le ofere pentru stocarea cookie-urilor. Astfel, browserul trebuie să stocheze cel puțin 300 de cookie-uri de 4096 de octeți fiecare și cel puțin 20 de cookie-uri pe server sau domeniu .
Browserele populare au un maxim corespunzător de cookie-uri stocate pentru fiecare domeniu:
În practică, unele browsere pot impune restricții mai restrictive. De exemplu, Internet Explorer oferă 4096 de octeți pentru toate modulele cookie din același domeniu.
Numele cookie-urilor nu fac distincție între majuscule și minuscule, conform secțiunii 3.1 din RFC 2965 .
Cookie-urile pot seta data ștergerii lor, caz în care vor fi șterse automat de browser în perioada specificată. Dacă nu este specificată nicio dată de ștergere, cookie-urile sunt șterse imediat ce utilizatorul închide browserul. Astfel, specificarea unei date de expirare permite stocarea cookie-urilor pentru mai mult de o sesiune, iar astfel de cookie-uri se numesc persistente. De exemplu, un magazin online poate folosi cookie-uri persistente pentru a stoca codurile pentru articolele pe care utilizatorul le-a introdus în coșul de cumpărături - și chiar dacă utilizatorul închide browserul fără să facă o achiziție, data viitoare când se va conecta, nu va avea pentru a reconstrui căruciorul.
De asemenea, stocarea cookie-urilor poate fi limitată în funcție de serverul web, domeniul sau subdomeniul în care au fost create.
Potrivit unei versiuni, termenul „cookies” (cookies) provine de la „ cookie-uri magice ” [7] - un set de date pe care programul le primește și apoi le trimite înapoi neschimbate. În iunie 1994, Lou Montulli a venit cu ideea de a le folosi într-o conexiune web [8] . La acea vreme, el era angajat la Netscape Communications , care dezvolta un pachet de comerț electronic comandat. Cookie-urile au devenit o soluție la problema implementării fiabile a coșului de cumpărături virtual.
Cu ajutorul lui John Giannandrea , Montulli a scris specificația inițială a cookie-urilor în același an. Mosaic Netscape 0.9beta, lansat pe 13 octombrie 1994 [9] [10] , deja suporta module cookie. Cookie-urile au fost utilizate pentru prima dată în afara laboratorului de pe site-ul Netscape și au determinat dacă un utilizator a vizitat anterior site-ul. Montulli a solicitat un brevet în 1995 și l-a primit în 1998. Internet Explorer a început să accepte module cookie cu versiunea 2, lansată în octombrie 1995 [11] .
Deși unii oameni cunoșteau existența cookie-urilor încă din primul trimestru al anului 1995 [12] , publicul larg nu a luat cunoștință de ele decât după un articol din Financial Times din 12 februarie 1996 . În același an, cookie-urile au devenit în centrul atenției mass-media, în special din cauza potențialei amenințări la adresa vieții private . Cookie-urile au fost luate în considerare de Comisia Federală pentru Comerț din SUA în două audieri în 1996 și 1997.
Dezvoltarea specificațiilor cookie-urilor nu s-a oprit aici. În special, primele discuții ale unei specificații oficiale au început în aprilie 1995. A fost format un grup de lucru ad-hoc în cadrul IETF . Specificația Netscape a fost aleasă ca punct de plecare. În februarie 1996, un grup de lucru a identificat cookie-urile de la terți ca fiind o amenințare serioasă pentru confidențialitate. Specificația rezultată a fost lansată ca RFC 2109 în februarie 1997 . Acesta a afirmat că cookie-urile terță parte ar trebui fie blocate, fie cel puțin să nu funcționeze în mod implicit.
La acel moment, companiile de publicitate utilizau deja module cookie de la terți cu putere și principal, iar recomandările RFC 2109 nu erau acceptate nici de browserele Netscape, nici de Internet Explorer. Mai târziu, în octombrie 2000 , RFC 2109 a fost înlocuit cu noua specificație RFC 2965 .
Cookie-urile de sesiune , cunoscute și ca cookie-uri temporare , există doar în memoria temporară în timp ce utilizatorul se află pe o pagină a unui site web. Browserele șterg de obicei cookie-urile de sesiune după ce utilizatorul închide fereastra browserului [13] . Spre deosebire de alte tipuri de cookie-uri, cookie-urile de sesiune nu au o dată de expirare și, prin urmare, sunt înțelese de browsere drept cookie-uri de sesiune.
În loc să fie șterse când browserul este închis, așa cum fac cookie-urile de sesiune, cookie- urile persistente sunt șterse la o anumită dată sau după o anumită perioadă de timp. Aceasta înseamnă că informațiile despre cookie vor fi trimise serverului de fiecare dată când utilizatorul vizitează site-ul web căruia îi aparține cookie-ul. Din acest motiv, cookie-urile persistente sunt uneori denumite cookie-uri de urmărire , deoarece pot fi utilizate de agenții de publicitate pentru a înregistra preferințele utilizatorilor pe o perioadă lungă de timp. Totuși, ele pot fi folosite și în scopuri „pașnice”, de exemplu, pentru a evita reintroducerea datelor de fiecare dată când vizitați site-ul.
De obicei, atributul de domeniu al unui cookie este același cu domeniul care apare în bara de adrese a unui browser web. Acesta se numește primul cookie. Cu toate acestea, cookie-ul terță parte aparține unui alt domeniu decât cel afișat în bara de adrese. Acest tip de cookie apare de obicei atunci când paginile web conțin conținut de pe site-uri externe, cum ar fi reclame banner. Acest lucru deschide oportunități de a urmări istoricul de navigare al unui utilizator și este adesea folosit de agenții de publicitate pentru a oferi anunțuri relevante fiecărui utilizator.
De exemplu, să presupunem că un utilizator vizitează www.example.org. Acest site web conține reclame de la ad.foxytracking.com care, atunci când este încărcat, setează un cookie aparținând domeniului publicitar (ad.foxytracking.com). Utilizatorul vizitează apoi un alt site web www.foo.com care conține și reclame de la ad.foxytracking.com și setează un cookie aparținând acelui domeniu (ad.foxytracking.com). La urma urmei, ambele cookie-uri vor fi trimise agentului de publicitate atunci când anunțul este încărcat sau când site-ul lor este vizitat. Agentul de publicitate poate folosi apoi aceste module cookie pentru a construi istoricul de navigare al utilizatorului pe toate site-urile web care găzduiesc anunțul advertiserului respectiv.
Începând cu 2014, unele site-uri au stabilit module cookie de citire pe peste 100 de domenii ale terților [14] . În medie, au fost setate 10 cookie-uri pe site, numărul maxim de cookie-uri (atât pentru terți, cât și pentru terți) depășind 800 [15] . Majoritatea browserelor web moderne conțin setări de confidențialitate care pot bloca cookie-urile de la terți.
Un super cookie este un cookie cu o origine de domeniu de nivel superior (de exemplu .ru ) sau un sufix public (de exemplu .co.uk). Cookie-urile obișnuite, pe de altă parte, sunt derivate dintr-un anumit nume de domeniu, cum ar fi example.com.
Super-cookie-urile pot fi o potențială problemă de securitate și, prin urmare, sunt adesea blocate de browserele web. Dacă un browser deblochează un site web rău intenționat, un atacator poate seta un super cookie și poate perturba sau uzurpa identitatea cererilor legitime ale utilizatorilor către un alt site web care utilizează același domeniu de nivel superior sau sufix public ca site-ul web rău intenționat. De exemplu, un supercookie cu origin .com ar putea afecta în mod rău intenționat o solicitare către example.com chiar dacă cookie-ul nu a fost creat de example.com. Aceasta poate fi folosită pentru a falsifica autentificarea sau pentru a schimba informațiile despre utilizator.
Lista publică de sufixe [16] ajută la reducerea riscului pe care îl prezintă supercookie-urile. Lista de sufixe publice este o inițiativă între furnizori care își propune să ofere o listă exactă și actualizată de sufixe de nume de domeniu. Este posibil ca versiunile mai vechi ale browserelor să nu aibă o listă actualizată și, prin urmare, să fie vulnerabile la super-cookie-uri din anumite domenii.
Termenul „supercookie” (super-cookie) este uneori folosit pentru a urmări tehnologiile care nu folosesc cookie-uri HTTP. În august 2011, pe site-urile Microsoft au fost descoperite două astfel de mecanisme „supercookie”: sincronizarea cookie-urilor, care produce un cookie MUID (identificator unic de mașină) și un cookie ETag [17] . Datorită atenției mass-media, Microsoft a dezactivat ulterior acest cod [18] .
Deoarece cookie-urile pot fi eliminate foarte ușor din browser, programatorii caută modalități de a identifica utilizatorii chiar și după ștergerea completă a istoricului browserului. O astfel de soluție este cookie-urile zombie (sau evercookie , sau cookie- uri persistente ) - cookie-uri care nu se șterg sau greu de șters care pot fi restaurate în browser folosind JavaScript. Acest lucru este posibil deoarece site-ul utilizează simultan toate stocările de browser disponibile pentru a stoca cookie-uri ( HTTP ETag, Session Storage, Local Storage, Indexed DB ), inclusiv stocări de aplicații precum Flash Player ( Local Shared Objects ), Microsoft Silverlight ( Isolated Storage ) și Java ( API de persistență Java ). Atunci când programul detectează absența unui cookie în browser, informații despre care sunt prezente în alte magazine, îl restabilește imediat la locul său și, prin urmare, identifică utilizatorul pentru site.
RFC 6265 oferă instrucțiuni specifice despre modul de interpretare a fiecăruia dintre parametrii cookie-urilor:
În 2015, a fost aprobat un document de actualizare a specificației RFC 6265 , care a adăugat un set de restricții de denumire pentru cookie-uri. Pentru a oferi o securitate suplimentară, experții au propus prefixe speciale de nume __Secure-și __Host-, indicând browserului necesitatea respectării unor cerințe speciale la primirea cookie-urilor de la server [19] .
Dacă cel puțin una dintre cerințele enumerate este încălcată, instalarea unui cookie în browser va fi respinsă. Suportul pentru prefix este implementat în Chrome 49+, Firefox 50+ și Opera 36+ [20] .
Dacă toate opțiunile de mai sus sunt activate, cererea de a seta un cookie de la server va arăta astfel:
Set-Cookie: __Secure-name=value; max-age=31536000; domain=example.com; path=/; secure; httponly; samesite=lax
Ca orice alt antet HTTP, un cookie trebuie trimis către browser înainte de a fi trimise orice alte date, inclusiv șiruri goale și caractere de spațiu alb (aceasta este o limitare a protocolului HTTP).
Când solicită o pagină, browserul trimite un scurt text cu o solicitare HTTP către serverul web. De exemplu, pentru a accesa pagina http://www.example.org/index.html, browserul trimite următoarea solicitare către serverul www.example.org:1
GET /index.html HTTP/1.1 |
||
browser | → | Server |
Serverul răspunde prin trimiterea paginii solicitate împreună cu un text care conține un răspuns HTTP. Poate conține o instrucțiune către browser pentru a salva cookie-ul:
HTTP/1.1 200 OK |
||
browser | ← | Server |
Șirul Set-cookieeste trimis doar atunci când serverul dorește ca browserul să salveze cookie-ul. În acest caz, dacă cookie-urile sunt acceptate de browser și acceptarea lor este activată, browserul își amintește șirul name=value(nume = valoare) și îl trimite înapoi la server cu fiecare solicitare ulterioară. De exemplu, când solicită următoarea pagină http://www.example.org/spec.html, browserul va trimite următoarea solicitare către serverul www.examle.org:
GET /spec.html HTTP/1.1 |
||
browser | → | Server |
Această solicitare diferă de prima cerere prin faptul că conține șirul pe care serverul l-a trimis mai devreme către browser. Astfel, serverul va ști că această solicitare este legată de cea anterioară. Serverul raspunde prin trimiterea paginii solicitate si eventual adaugand noi cookie-uri.
Valoarea cookie-ului poate fi modificată de către server prin trimiterea de linii noi Set-Cookie: name=new_value. Browserul înlocuiește apoi vechiul cookie cu același nume cu noul șir.
Cookie-urile pot fi setate și de programe în limbi precum JavaScript, încorporate în textul paginilor, sau scripturi similare care rulează în browser. JavaScript folosește proprietatea cookie a obiectului document pentru a face acest lucru document.cookie. De exemplu, document.cookie="temperature=20"va crea un cookie numit „temperature” cu o valoare de 20 [21] .
Cookie-urile pot fi folosite de server pentru a identifica utilizatorii autentificati anterior . Se întâmplă așa [22] :
Această metodă este utilizată pe scară largă pe multe site-uri precum Yahoo! , pe Wikipedia și pe Facebook .
Multe browsere (în special Opera, FireFox) pot controla comportamentul site-urilor web prin editarea proprietăților cookie-urilor. Schimbând data de expirare a cookie-urilor nepersistente (de sesiune), puteți, de exemplu, să obțineți o sesiune nelimitată formal după autorizarea pe un site. Capacitatea de a edita module cookie folosind instrumente standard nu este disponibilă în Internet Explorer. Dar, folosind alte mecanisme, precum JavaScript, utilizatorul poate schimba cookie-ul. Mai mult, este posibil să înlocuiți cookie-urile de sesiune cu altele permanente (cu dată de expirare).
Cu toate acestea, software-ul serverului poate urmări astfel de încercări. Pentru a face acest lucru, serverul emite un cookie pentru o anumită perioadă de timp și scrie data de expirare a cookie-urilor pe el însuși sau, în formă criptată, în cookie-urile în sine, de fiecare dată când utilizatorul accesează serverul. Dacă cookie-ul trimis de browser are o dată de expirare diferită de cea stocată pe server sau conținută în cookie, atunci se încearcă falsificarea datei de expirare a cookie-ului. Serverul poate răspunde, de exemplu, cerând utilizatorului să reautorizeze.
Majoritatea browserelor moderne acceptă cookie-uri [23] și, de regulă, utilizatorul poate alege dacă cookie-urile trebuie utilizate sau nu. Cele mai comune setări ale browserului sunt [24] :
Majoritatea browserelor activate cu JavaScript permit utilizatorului să vadă module cookie active pe un anumit site, tastând javascript:alert(document.cookie)sau javascript:prompt(document.cookie)în bara de adrese a browserului [24] . Unele browsere includ un manager de cookie-uri care permite utilizatorului să vizualizeze și să șteargă selectiv cookie-urile stocate în browser.
Există o concepție greșită conform căreia cookie-urile sunt programe și pot urmări în mod independent acțiunile utilizatorului, deși acestea sunt doar bucăți de date stocate pe computer de către browser [25] . Potrivit unui sondaj realizat de compania americană Insight Express în 2005, 25% dintre respondenți sunt siguri de acest lucru [26] .
Cookie-urile au un impact semnificativ asupra anonimatului utilizatorilor de internet și asupra confidențialității informațiilor utilizatorilor. Deși cookie-urile sunt trimise numai către serverele din domeniul pentru care sunt destinate, o pagină web poate încărca imagini sau alte componente din alte domenii. Cookie-urile primite în timpul încărcării acestor componente din alte domenii sunt numite „terț” [27] .
Companiile de publicitate folosesc cookie-uri de la terți pentru a urmări mișcările utilizatorului pe site-uri. În special, o companie de publicitate poate urmări utilizatorii pe toate site-urile pe care sunt instalate bannerele lor publicitare . Cunoașterea paginilor vizitate de utilizator vă permite să schimbați direcția publicității în funcție de preferințele utilizatorului.
Profilarea utilizatorilor este văzută ca un risc potențial de confidențialitate chiar și atunci când este urmărită pe un singur domeniu, dar mai ales când este urmărită pe mai multe domenii folosind cookie-uri terță parte. Din acest motiv, cookie-urile sunt reglementate prin lege în unele țări.
Guvernul Statelor Unite a promulgat legi stricte privind cookie-urile în 2000, după ce s-a constatat că Agenția SUA pentru Aplicarea Drogurilor a folosit cookie-uri pentru a urmări utilizatorii care și-au văzut reclamele antidrog online. În 2002, Daniel Brandt a descoperit că CIA setează cookie-uri persistente pe computere cu o perioadă de păstrare de până în 2010. Când CIA a fost informată despre utilizarea ilegală a cookie-urilor, agenția a spus că nu a fost intenționat și a încetat să le instaleze [28] . Pe 25 decembrie 2005, Brandt a descoperit că Agenția Națională de Securitate a lăsat câteva cookie-uri persistente după o actualizare a software-ului. După acest mesaj, Agenția a dezactivat imediat cookie -urile [29] .
Directiva Uniunii Europene 2002/58/CE privind confidențialitatea și comunicațiile electronice [30] conține reguli privind utilizarea cookie-urilor. În special, articolul 5 alineatul (3) prevede că stocarea datelor (inclusiv module cookie) poate avea loc numai dacă:
În 2009, Directiva 2009/136/CE [31] a modificat Directiva 2002/58/CE, care a intrat în vigoare în mai 2011. Modificările au înăsprit cerințele pentru colectarea de informații despre vizitatorii site-ului. Potrivit noilor reguli, proprietarii de site-uri trebuie să obțină acordul prealabil al vizitatorilor pentru colectarea de informații (inclusiv cookie-uri) și să raporteze cu privire la instrumentele de colectare a informațiilor care funcționează pe site [32] .
În mai 2018, în Uniunea Europeană a intrat în vigoare Regulamentul general privind protecția datelor , înlocuind actuala Directiva 2002/58/CE, care se aplică tuturor site-urilor web vizitate din interiorul Uniunii Europene și echivalează majoritatea cookie-urilor cu alte date personale. Proiectul inițial sugera că setările browserului ar putea fi considerate o dovadă suficientă a consimțământului utilizatorului de a seta un cookie [33] , iar conform versiunii finale, notificarea setării unui cookie este suficientă [34] .
Specificația P3P include capacitatea unui server web de a raporta o încălcare a confidențialității unui browser, indicând natura informațiilor colectate și scopul colectării. Aceasta include utilizarea informațiilor obținute prin cookie-uri. Conform specificației P3P, browserul poate accepta sau respinge cookie-urile în funcție de preferințele utilizatorului sau poate cere utilizatorului.
Multe browsere, inclusiv Safari de la Apple și Internet Explorer versiunile 6 și 7 de la Microsoft , acceptă specificațiile P3P care vă permit să determinați dacă cookie-urile terță parte ar trebui permise. Browserul Opera permite utilizatorilor să renunțe la cookie-urile de la terți și să creeze profiluri de securitate globale sau personalizate pentru domeniile web [35] . Firefox 2 a eliminat această opțiune, dar a fost restaurată în versiunea 3.
Pe lângă problemele de confidențialitate, cookie-urile au unele dezavantaje tehnice care sunt inerente oricăror date. În special, ele nu identifică întotdeauna cu exactitate utilizatorul și pot fi cauza unor atacuri rău intenționate.
Dacă pe un computer este utilizat mai mult de un browser, fiecare are de obicei un depozit separat de cookie-uri. Prin urmare, cookie-urile nu identifică o persoană, ci o combinație de cont , computer și browser. Astfel, orice persoană care utilizează mai multe conturi, computere sau browsere are mai multe seturi de cookie-uri.
În timpul funcționării normale, cookie-urile sunt schimbate în mod constant între server și browserul utilizatorului. Deoarece cookie-urile pot conține informații sensibile (nume de utilizator, condiții de acces etc.), conținutul lor nu trebuie pus la dispoziția altora. Furtul de cookie-uri este actul de interceptare neautorizată a cookie-urilor de către terți.
Cookie-urile pot fi furate folosind analiza traficului - aceasta se numește deturnarea sesiunii. Traficul din rețea poate fi interceptat de mai mult decât de expeditorul și receptorul său (în special în rețelele Wi-Fi publice ). Acest trafic include și cookie-uri transmise prin sesiuni HTTP necriptate. Acolo unde traficul de rețea nu este criptat, atacatorii pot citi comunicările utilizatorilor rețelei, inclusiv cookie-urile acestora, folosind programe numite sniffer .
Criptarea datelor din cookie-uri de către server înlătură problema securității acestora, cu toate acestea, este posibilă înlocuirea cookie-urilor de către un atacator. Pentru a face imposibilă accesarea chiar și a cookie-urilor criptate, stabilirea unei conexiuni criptate între utilizator și server folosind protocolul HTTPS poate ajuta . Serverul poate folosi și un steag special la setarea cookie-urilor, după care browserul le va transmite doar pe un canal de încredere, de exemplu, printr-o conexiune SSL [6] .
Cu toate acestea, un număr mare de site-uri web, chiar și folosind sesiuni HTTPS securizate pentru a autentifica utilizatorul, trimit apoi cookie-uri și alte date printr-o conexiune HTTP mai simplă, necriptată. Atacatorii pot intercepta cu ușurință cookie-urile altor utilizatori și le pot folosi pe site-urile respective [36] .
Pentru a vă asigura că cookie-ul este transmis numai printr-o sesiune HTTPS, cookie-ul trebuie să aibă atributul Secure.
Un alt mod în care cookie-urile sunt furate este scriptarea între site-uri și trimiterea neautorizată de cookie-uri către servere care nu ar trebui să le primească. Browserele moderne pot executa fragmente de cod primite de la server. Dacă cookie-urile sunt disponibile în timpul acestei execuții, conținutul lor poate ajunge într-o formă sau alta pe servere care nu ar trebui să le poată accesa. Criptarea cookie-ului nu va ajuta în acest caz [37] .
Următorul tip de scriptare între site-uri este utilizat în mod obișnuit pe site-urile unde utilizatorilor li se permite să trimită mesaje cu conținut HTML. Inserând codul PHP/Javascript corespunzător într-un mesaj, un atacator poate obține cookie-uri de la alți utilizatori.
Aceste atacuri pot fi prevenite prin setarea semnalizatorului HttpOnly [38] , ceea ce face ca cookie-urile să nu fie disponibile pentru scripturile de pe partea clientului. Cu toate acestea, dezvoltatorii web ar trebui să ia în considerare protecția împotriva cross-site scripting în timpul dezvoltării site-urilor web [39] .
În timp ce, în teorie, cookie-urile ar trebui păstrate și trimise înapoi la server neschimbate, un atacator își poate schimba conținutul înainte de a fi trimise. De exemplu, cookie-urile pot conține suma totală pe care utilizatorul trebuie să o plătească pentru achizițiile sale; prin modificarea acestei valori, atacatorul va putea plăti mai puțin decât suma stabilită. Procesul de modificare a conținutului unui cookie se numește cookie spoofing .
Pentru a se proteja împotriva unor astfel de atacuri, majoritatea site-urilor web stochează doar ID-ul sesiunii într-un cookie, un număr generat aleatoriu sau un set de caractere folosite pentru a identifica sesiunea, în timp ce toate celelalte informații sunt stocate pe server. În acest caz, înlocuirea cookie-urilor este mult mai dificilă.
Fiecare site trebuie să aibă propriile cookie-uri, iar example1.com nu trebuie să modifice sau să seteze un alt cookie-ul example2.org. Vulnerabilitățile browserului web permit site-urilor rău intenționate să încalce această regulă. Acest lucru este similar cu usurarea cookie-urilor, dar aici atacatorul atacă utilizatorii cu browsere vulnerabile, nu direct site-ul. Identificatorii de sesiune pot fi ținta unor astfel de atacuri.
Pentru protecție, utilizatorii sunt sfătuiți să folosească cele mai recente versiuni de browsere care rezolvă această problemă.
Cookie-urile pot provoca conflicte între client și server. Dacă utilizatorul primește cookie-ul și apoi face clic pe butonul înapoi al browserului, atunci starea browserului este deja diferită de când a fost primit cookie-ul. De exemplu, să luăm un magazin electronic cu un coș de cumpărături bazat pe cookie-uri: utilizatorul adaugă o achiziție în coș, apoi dă clic pe butonul Înapoi, dar achiziția rămâne în coș, deși este posibil ca utilizatorul să fi dorit să anuleze achiziția . Acest lucru poate duce la confuzii și erori. Dezvoltatorii web ar trebui să țină cont de acest lucru și să ia măsuri pentru a face față unor astfel de situații.
Cookie-urile persistente au fost criticate de experți pentru durata lor lungă de valabilitate, ceea ce permite site-urilor web să urmărească și să profileze utilizatorii în timp [40] . Problemele de securitate sunt, de asemenea, implicate aici, deoarece cookie-urile persistente furate pot fi utilizate pentru o perioadă semnificativă de timp.
În plus, un malware bine conceput, care poate fi lansat după autentificarea utilizatorului, poate transfera cookie-uri de sesiune pe computerul atacatorului, ceea ce, într-o primă aproximare, va permite vizitarea unui site securizat fără introducerea unui nume de utilizator și a unei parole pentru o perioadă de timp arbitrar de lungă.
Cookie-urile obișnuite au o „durată de viață” foarte lungă, dar limitată, după care sunt șterse. În plus, orice cookie-uri din browser pot fi șterse folosind o opțiune specială. Ca urmare, browserul încetează să identifice vizitatorul la reintrarea pe site. Specialistul polonez Sammy Kamkar a decis să sistematizeze cele mai „supraviețuitoare” cookie-uri, rezultând o bibliotecă JavaScript numită Everycookie. Aceste cookie-uri minune permit teoretic identificarea oricărui vizitator al site-ului atunci când revine pe pagină. Un site care folosește bibliotecile Everycookie ocolește cu ușurință toate măsurile de anonimat (deși unele antivirusuri pot detecta astfel de site-uri ca fiind periculoase). Pentru a vă proteja împotriva Everycookie, este recomandat să utilizați modul Private Browsing sau programe speciale precum Mil Shield.
Cookie-urile au fost introduse inițial pentru a permite utilizatorilor să înregistreze articolele pe care doresc să le achiziționeze în timp ce navighează pe un site web („coș de cumpărături” sau „coș de cumpărături”) [41] [42] . Astăzi, totuși, conținutul coșului de cumpărături al unui utilizator este de obicei stocat într-o bază de date de pe server, mai degrabă decât într-un cookie despre client. Pentru a urmări utilizatorul căruia îi aparține coșul de cumpărături, serverul trimite clientului un cookie care conține un ID unic de sesiune (de obicei, un șir lung de litere și numere aleatorii). Deoarece cookie-urile sunt trimise la server la fiecare solicitare din partea clientului, acest ID de sesiune va fi trimis înapoi la server de fiecare dată când utilizatorul vizitează o pagină nouă de pe site-ul web care îi informează pe server ce coș de cumpărături să afișeze utilizatorului.
O altă utilizare populară a cookie-urilor este autentificarea pe site-uri web. Când un utilizator vizitează pagina de conectare a unui site web, serverul web trimite de obicei un cookie clientului care conține un ID unic de sesiune. Când un utilizator se conectează cu succes, serverul își amintește că respectivul ID de sesiune a fost autentificat și acordă utilizatorului acces la serviciile sale.
Deoarece cookie-urile de sesiune conțin doar un ID unic de sesiune, acest lucru face ca cantitatea de informații personale pe care un site web o poate stoca despre fiecare utilizator este practic nelimitată - site-ul web nu este legat de limitele de dimensiune cookie. Cookie-urile de sesiune ajută, de asemenea, la reducerea timpilor de încărcare a paginii, deoarece cantitatea de informații dintr-un cookie de sesiune este mică și necesită o lățime de bandă mică.
Cookie-urile pot fi folosite pentru a reține informații despre utilizator pentru a le arăta conținut relevant în timp. De exemplu, un server web poate trimite un cookie care conține numele de utilizator care a fost utilizat ultima dată pentru a se conecta la un site web, astfel încât să poată fi completat automat data viitoare când utilizatorul se conectează.
Multe site-uri web folosesc cookie-uri pentru personalizare în funcție de preferințele utilizatorului. Utilizatorii își aleg preferințele introducându-le într-un formular web și trimițând formularul la server. Serverul codifică setările într-un cookie și trimite cookie-ul înapoi la browser. Astfel, de fiecare dată când un utilizator accesează o pagină de pe site, serverul poate personaliza pagina în funcție de preferințele utilizatorului. De exemplu, motorul de căutare Google a folosit cândva module cookie pentru a permite utilizatorilor (chiar și utilizatorilor neînregistrați) să decidă câte rezultate de căutare pe pagină doresc să vadă.
Cookie-urile sunt folosite pentru a urmări obiceiurile de navigare ale utilizatorilor. Acest lucru se poate face și într-o oarecare măsură folosind adresa IP a computerului care solicită pagina sau câmpul de referință din antetul solicitării HTTP, dar cookie-urile permit o precizie mai mare. Acest lucru poate fi demonstrat dacă utilizatorul solicită o pagină de pe site, dar cererea nu include un cookie, serverul presupune că aceasta este prima pagină pe care utilizatorul a vizitat-o. Deci serverul generează un identificator unic (de obicei o secvență de litere și numere aleatorii) și îl trimite ca cookie la browser împreună cu pagina solicitată.
De acum înainte, cookie-ul va fi trimis automat de către browser către server de fiecare dată când se solicită o nouă pagină de pe site. Serverul nu numai că trimite pagina ca de obicei, dar stochează și adresa URL a paginii solicitate, data/ora solicitării și cookie-ul într-un fișier jurnal.
Analizând acest fișier jurnal, puteți determina ce pagini a vizitat utilizatorul, în ce ordine și pentru cât timp.
Unele dintre operațiunile pentru care sunt utilizate cookie-uri pot fi implementate folosind alte mecanisme. Cu toate acestea, aceste alternative au dezavantajele lor, care fac cookie-urile uneori mai preferate în practică. Cele mai multe dintre aceste alternative vă permit să urmăriți utilizatorul, deși într-un mod mai puțin fiabil decât cookie-urile. Drept urmare, confidențialitatea rămâne în pericol chiar dacă cookie-urile sunt dezactivate de browser sau nu sunt setate de server.
Această metodă nesigură de urmărire a utilizatorilor se bazează pe stocarea adreselor IP ale computerelor care vizualizează paginile. Această tehnică a fost disponibilă încă de la începuturile World Wide Web , necesitând cunoașterea adresei IP a clientului pentru a încărca o pagină. Aceste informații pot fi stocate pe server indiferent dacă sunt utilizate cookie-uri sau nu.
Cu toate acestea, această metodă este mai puțin sigură decât cookie-urile, deoarece computerele și proxy-urile pot fi partajate între mai mulți utilizatori, iar un computer poate folosi adrese IP diferite în sesiuni diferite (adresă IP dinamică).
Urmărirea după adresa IP ar putea să nu fie posibilă atunci când utilizați sisteme de păstrare a anonimatului (de exemplu, Tor ). În astfel de sisteme, un singur browser poate avea mai multe adrese IP și mai mulți utilizatori pot folosi aceeași adresă IP, ceea ce face imposibilă urmărirea adresei IP.
Unii ISP-uri majori, inclusiv AOL , transmit tot traficul web printr-o rețea proxy , ceea ce face, de asemenea, această metodă nefuncționabilă.
O tehnică mai avansată se bazează pe încorporarea datelor în adresa URL. Acest lucru se face de obicei folosind un șir de interogare, dar pot fi utilizate și alte părți ale adresei URL. JavaScript și PHP folosesc pe scară largă aceste mecanisme atunci când cookie-urile sunt dezactivate.
Serverul web adaugă un șir de interogare la un link către o pagină web atunci când este trimis către browser. Când utilizatorul face clic pe link, browserul returnează un șir de interogare la server.
În acest sens, șirul de interogare și cookie-ul sunt foarte asemănătoare: sunt bucăți de informații de server returnate înapoi de browser. Dar există anumite diferențe: deoarece șirul de interogare face parte din URL, atunci când reutilizați această adresă URL, aceleași informații vor fi transmise serverului. De exemplu, dacă opțiunile unui utilizator sunt codificate într-un șir de interogare URL și utilizatorul trimite acel URL către alt utilizator, acele opțiuni vor fi valabile și pentru celălalt utilizator.
Mai mult, chiar dacă utilizatorul accesează în mod repetat aceeași pagină, nu există nicio garanție că șirul de interogare va rămâne neschimbat. De exemplu, atunci când navigați din paginile interne ale site-ului și din motoarele de căutare externe, șirurile de interogare vor fi diferite, în timp ce cookie-urile vor rămâne aceleași.
Un alt dezavantaj al șirului de interogare vine din punct de vedere al securității: stocarea ID-ului de sesiune în șirul de interogare facilitează atacul. Transmiterea unui ID într-un cookie este mai sigură.
O modalitate de a urmări o sesiune cu un program pe partea de server este utilizarea formularelor web cu câmpuri ascunse. Această metodă este foarte asemănătoare cu șirul de interogare URL și are aproape aceleași avantaje și dezavantaje, iar dacă parametrii formularului sunt trimiși prin metoda HTTP GET, atunci câmpurile vor deveni de fapt parte a adresei URL pe care browserul o va trimite serverului. . Dar majoritatea formularelor sunt procesate de HTTP POST , unde informațiile nu fac parte nici din URL, nici din cookie.
Această abordare are două avantaje în ceea ce privește urmărirea: în primul rând, lipirea informațiilor în codul HTML și în POST, și nu în URL, înseamnă că utilizatorul obișnuit pur și simplu nu o va observa și, în al doilea rând, informațiile despre sesiune nu sunt copiate. cu copierea adresei URL (de exemplu, când un utilizator trimite un link prin e-mail). Dezavantajul acestei metode este că informațiile de sesiune sunt conținute în codul HTML, astfel încât pagina web trebuie generată de fiecare dată când este solicitată, ceea ce crește încărcarea pe serverul web.
Protocolul HTTP include autentificare și criptare de bază, care permit accesul la o pagină numai atunci când utilizatorul introduce numele de utilizator și parola corecte. Dacă serverul solicită acest lucru, atunci browserul contactează utilizatorul și, după ce a primit datele necesare, le salvează și le folosește pentru a accesa alte pagini fără a solicita utilizatorului să le introducă din nou. Din punctul de vedere al utilizatorului, efectul este același ca în cazul utilizării unui cookie: un nume de utilizator și o parolă sunt necesare o singură dată, iar apoi utilizatorului i se acordă acces la site. Cu autentificarea de bază, combinația nume de utilizator/parolă este trimisă necriptată la server cu fiecare solicitare de browser. Aceasta înseamnă că, dacă cineva interceptează traficul, va putea obține aceste informații și, ulterior, le va folosi. Cu autentificarea criptată, numele de utilizator și parola sunt criptate cu o cheie aleatorie generată de server.
Unele browsere web permit unei pagini să stocheze informații la nivel local pentru recuperarea ulterioară. Internet Explorer, de exemplu, acceptă stocarea informațiilor în istoric, favorite , stocare XML sau permite salvarea directă a unei pagini web pe disc [43] .
JSON Web Token (JWT) este un pachet autonom de informații care poate fi folosit pentru a stoca informații despre identitatea și identitatea unui utilizator. Acest lucru le permite să fie folosite în locul cookie-urilor de sesiune. Spre deosebire de cookie-urile, care sunt atașate automat la fiecare solicitare HTTP de către browser, JWT-urile trebuie atașate în mod explicit de către aplicația web la fiecare solicitare HTTP.
Toate browserele web moderne pot stoca o cantitate destul de mare de date (2-32 MB) prin JavaScript folosind proprietatea DOM window.name. Aceste date pot fi utilizate în locul cookie-urilor de sesiune și sunt, de asemenea, între domenii. Tehnica poate fi combinată cu obiecte JSON/JavaScript pentru a stoca seturi complexe de variabile de sesiune [44] pe partea clientului.
Cache-ul web poate fi folosit și pentru a stoca informații care pot fi folosite pentru a urmări utilizatorii individuali. Această metodă profită de faptul că browserul web va folosi resursele stocate în cache în loc să le descarce de pe site atunci când stabilește că cea mai recentă versiune a resursei este deja în cache.
De exemplu, o pagină poate conține un link <script type="text/javascript" src="example.js">. Scriptul setează un identificator unic pentru utilizator (de exemplu, var userId = 3243242;). După vizita inițială, de fiecare dată când utilizatorul vizitează pagina, acest fișier va fi încărcat din cache în loc să fie încărcat de pe server. Astfel, conținutul său nu se va schimba niciodată.
Singurul avantaj al acestei metode este lucrul pe site, care permite monitorizarea neautorizată a utilizatorului. Dezavantaje - transfer netrivial al acestor informații către server și imposibilitate extremă de administrare: browserul poate pierde oricând datele din cache, în funcție de setări, dimensiunea memoriei și spațiul pe disc. Mozilla Firefox 85+ nu permite urmărirea pe mai multe site-uri prin cache [45] .
Majoritatea browserelor moderne acceptă cookie-uri și permit utilizatorului să le dezactiveze. Următoarele sunt opțiuni comune [46] :
HTTP | |
---|---|
Concepte generale |
|
Metode | |
Titluri |
|
Codurile de stare |