HTTP kolačić
HTTP cookie, takođe i cookie ili kolačić je jednostavna tekstualna datoteka koja se čuva u veb-pregledaču dok korisnik pregleda neki veb-sajt. Kada korisnik u budućnosti pregleda taj isti sajt, sajt može "izvući" ili dohvatiti podatke koji su sačuvani u kolačiću, kako bi bio obavešten o prethodnoj korisničkoj aktivnosti. Kolačići mogu sadržati informacije o tome koje je stranice korisnik posetio, podatke o prijavi, pa i koju dugmad je korisnik kliknuo. Ovi podaci mogu ostati u kolačiću mesecima, čak i godinama.
Kolačići se ponekad mešaju s programima - međutim, oni su samo komadić podataka - i sami ne mogu ništa uraditi. Ne mogu sadržati viruse niti instalirati maliciozni softver na računaru na kojem se koriste. Međutim, kolačići za praćenje (tracking cookies) i posebno kolačići trećih strana često se koriste kao način da se načine dugoročni zapisi o korisnikovoj istoriji pregledanja.
Ostale vrste kolačića vrše funkcije nužne za moderan Veb. Možda su najvažniji autentifikacijski kolačići, pomoću kojih server zna da li je korisnik prijavljen ili ne. Takođe zna i pod kojim je računarom korisnik prijavljen. Sigurnost ove vrste kolačića uglavnom zavisi od sigurnosti veb-sajta koji šalje kolačić, pregledača korisnika, i od toga jesu li podaci u kolačiću šifrovani. Ako je sigurnost niska, haker može pročitati podatke u kolačiću, pa ih može iskoristiti tako da dobije pristup podacima korisnika, ili se može prijaviti na veb-sajt pod korisničkim imenom i lozinkom.
Vrste kolačića
[uredi | uredi izvor]Sesijski kolačić
[uredi | uredi izvor]Sesijski kolačić postoji u privremenoj memoriji dok korisnik pregledava i navigira kroz site. Nastaje kada prilikom stvaranja kolačića nije određen datum njegova isteka. Internetski preglednici obično izbrišu sesijski kolačić kada ih korisnik zatvori.
Trajni kolačić
[uredi | uredi izvor]Trajni kolačić, kao što im i ime govori, po trajanju "nadmašuje" onaj sesijski. Ako kolačić ima svoj rok trajanja (Max-Age) podešen na 1 godinu, tada bi se unutar godinu dana serveru slala izvorna vrijednost u kolačiću, svaki put kada bi korisnik posjetio server. Ovo se može koristiti za snimanje važnih djelića informacija poput toga kako je korisnik izvorno dospio na site. Zbog ovog razloga zovu se i kolačići za praćenje (tracking cookies).
HTTPS kolačić
[uredi | uredi izvor]HTTPS kolačić može se koristiti samo na šifriranim HTTPS stranicama. Sigurniji je od običnog kolačića (secure cookie - sigurnosni kolačić) i otežava njegovu "krađu". (Vidi sljedeći podnaslov.)
HttpOnly
[uredi | uredi izvor]Vrstu kolačića pod imenom HttpOnly podržava većina modernih preglednika. Sesijski HttpOnly kolačić koristi se samo prilikom prenosa HTTP (ili HTTPS) zahtjeva. Na taj način zabranjuje pristup od strane ne-HTTP API-ja (kao što je JavaScript). Ova zabrana umanjuje, no ne eliminira u potpunosti, problem "krađe kolačića" preko cross-site scripting-a (XSS). Riječ je o sigurnosnoj rupi koju haker može iskoristiti tako što ubaci malicioznu skriptu na neku internetsku stranicu koju korisnici posjećuju. Tako se može desiti i krađa kolačića.
Kolačići trećih strana
[uredi | uredi izvor]Kolačići tzv. prve strane su kolačići podešeni s istom domenom (ili pod-domenom) koja je prikazana na adresnoj traci internetskog preglednika. S kolačićima trećih strana je suprotno - podešeni su s domenama drukčijim od one koju možete vidjeti u adresnoj traci.
Internetske stranice mogu imati sadržaj s domene neke treće strane, npr. oglas koji pokreće www.reklame.com
Opcije u većini modernih preglednika omogućuju blokiranje kolačića trećih strana.
Uzmimo jedan primjer. Pretpostavimo da je korisnik posjetio site www.primjer1.com
koji ima reklamu - i ta reklama postavlja kolačić s domenom ad.foxytracking.com
. Kada korisnik kasnije posjeti www.primjer2.com
, druga reklama može postaviti drugi kolačić s domenom ad.foxytracking.com
. Konačno, oba kolačića bit će poslana oglašivaču prilikom učitavanja reklama ili prilikom posjećivanja njegovog internetskog sitea. Oglašivač ove kolačiće može koristiti u svrhu izgrađivanja povijesti surfanja korisnika preko svih siteova na kojima oglašivač ima "trag".
Zombijevski kolačići
[uredi | uredi izvor]To su kolačići koji se ponovno automatski kreiraju nakon što ih korisnik izbriše, a što se može postići skriptom koja sprema sadržaj kolačića i na druge lokacije.
Namjena
[uredi | uredi izvor]Upravljanje sesijama
[uredi | uredi izvor]Kolačići se mogu koristiti za održavanje podataka povezanih s korisnikom. Omogućivanje korisniku da se prijavi na internetski site je primjer česte primjene kolačića. To radi tako što server prvo pošalje kolačić sa jedinstvenim sesijskim identifikatorom. Korisnik se onda prijavi s popunjenim podacima, internetska aplikacija provodi autentifikaciju sesije i dopušta korisniku pristup servisima.
Kolačići su također i način da se implementira "košarica za kupnju" - virtualni uređaj u koji korisnici mogu pohranjivati popis stvari koje žele kupiti. Aplikacije tih košarica obično spremaju sadržaj košarice u serverovu databazu, umjesto u sam kolačić. Server šalje kolačić s jedinstvenim sesijskim identifikatorom. Internetski preglednik će sesijski identifikator slati natrag sa svakim kasnijim posjetom.
Personalizacija
[uredi | uredi izvor]Kolačići se mogu koristiti za pamćenje informacija o korisniku koji je posjetio internetski site. Ti se podaci mogu iskoristiti da se u budućnosti prikaže neki relevantan, korisniku prilagođen sadržaj. Tako server može poslati kolačić koji sadržava korisničko ime korišteno zadnji put tijekom prijave, tako da polje s imenom može biti popunjeno u budućim posjetima.
Brojni internetski siteovi koriste kolačiće za personalizaciju - koja bi odgovarala korisnikovim postavkama i ukusu. Podaci o postavkama se mogu unijeti preko neke web forme te ih se poslati serveru. Server enkodira postavke u kolačiću i šalje ga natrag pregledniku. Ovako, svaki put kada korisnik pristupi stranici, serveru se šalje kolačić gdje su spremljene postavke, te može personalizirati stranicu u skladu s istima. Na primjer, Wikipedija omogućuje prijavljenim korisnicima da odaberu skin (prilagođeno grafičko sučelje) koji im se najviše sviđa; u prošlosti je Google dopuštao korisnicima, pa čak i onim neprijavljenima, da odrede koliko rezultata potrage po stranici žele vidjeti.
Praćenje
[uredi | uredi izvor]Kolačići za praćenje mogu se koristiti za praćenje korisnikovog surfanja. Ovo se djelomično uspješno može uraditi korištenjem IP adrese kompjutera s kojeg korisnik pristupa, no kolačići omogućuju veću preciznost. Evo kako mehanizam funkcionira:
- Ako korisnik pošalje zahtjev stranici kakvog internetskog sitea, ali njegov zahtjev ne sadrži kolačić, server pretpostavlja da je ovo prva stranica koju je korisnik posjetio; server potom stvara slučajni slijed znakova i šalje ih kao kolačić
- Nakon ovoga, preglednik će serveru automatski slati kolačić svaki put kada se pošalje zahtjev za novu stranicu sitea; server šalje stanicu, te spremi URL tražene stranice, datum/vrijeme zahtjeva, i kolačić u log (zapisnu) datoteku.
Implementacija
[uredi | uredi izvor]Kao što je prije spomenuto, kolačići su proizvoljni dijelovi podataka koje odabire server i šalje pregledniku, a preglednik ih nepromijenjene vraća serveru. Bez kolačića, svako bi dohvaćanje stranice ili neke njezine komponente bio izoliran događaj, uglavnom nepovezan za svim drugim pregledima stranica istog sitea.
Od preglednika se očekuje da može spremiti barem 300 kolačića velikih 4 kb, te barem 20 kolačića istoga servera ili domene.
Postavljanje kolačića
[uredi | uredi izvor]Preglednik zahtijeva stranicu od servera slanjem obično kratkog teksta koji se naziva HTTP zahtjev. Na primjer, kako bi korisnik pristupio stranici http://www.primjer.org/index.html, preglednik se spoji na server www.primjer.org, te mu šalje zahtjev koji izgleda poput ovoga:
GET /index.html HTTP/1.1 |
||
preglednik | server |
Server odgovara slanjem zahtijevane stranice kojem prethodi sličan paketić s tekstom, koji se zove HTTP odgovor. Paketić može sadržavati linije u kojima se traži od preglednika da pohrani kolačić.
HTTP/1.1 200 OK |
||
preglednik | server |
Server šalje linije stavke Set-Cookie
samo ako želi da preglednik pohrani kolačiće. Set-Cookie
je uputa pregledniku da pohrani kolačić te da ga šalje natrag u budućim zahtjevima serveru. Uputa je podložna atributu koji određuje "rok trajanja" kolačića.
Primjer: preglednik zahtijeva stranicu http://www.primjer.org/post.html tako što serveru www.primjer.org šalje zahtjev poput ovog:
GET /post.html HTTP/1.1 |
||
preglednik | server |
Ovo je zahtjev za drugom - drugačijom stranicom od istog servera, i razlikuje se od prvog zahtjeva po tome što sadrži liniju koju je server prethodno poslao pregledniku. Na ovaj način, server zna da je ovaj zahtjev povezan s prijašnjim. Server potom odgovara slanjem zahtijevane stranice i ponekad također šalje još kolačića.
Vrijednost kolačića može izmijeniti server slanjem nove linije - Set-Cookie: name=newvalue
u odgovoru na zahtjev. Preglednik zatim jednostavno zamijeni staru vrijednost s novom.
U slučaju da internetski preglednik to podržava, kolačić, osim servera, može postaviti i skripta - napisana u programskom jeziku JavaScript. U JavaScriptu se za ovu svrhu koristi objekt document.cookie
. Npr., document.cookie = "temperatura=20"
stvara kolačić imena temperatura
i vrijednosti 20
.
Postavke u preglednicima
[uredi | uredi izvor]Moderni preglednici redovito podržavaju kolačiće, ali i dopuštaju svojim korisnicima da ih onemoguće - često radi privatnosti. Dakle, najčešće opcije u vezi kolačića su:
- Kompletno onemogućavanje ili dopuštanje kolačića - tako da se uvijek blokiraju ili prihvaćaju.
- Katkad, cookie manager koji dopušta korisnicima uvid u kolačiće i selektivno brisanje onih što su trenutno pohranjeni u pregledniku.
Većina preglednika omogućuje istovremeno brisanje ne samo kolačića, već i lozinki, fraza korištenih u pretragama (tipa fraze utipkane na Googleu) i slično.
Međutim, valja naglasiti da onemogućavanje svih kolačića uvelike smanjuje funkcionalnost većine stranica, te se ona obično svede na minimum.
Mozilla Firefox
[uredi | uredi izvor]U novijim verzijama Mozille Firefox postavke u vezi kolačića mogu se naći na kartici Privacy, u odjeljku History. One su sljedeće:
- Accept cookies from site - omogućuje kolačiće
- Accept third-party cookies - prihvaća kolačiće trećih strana
- Keep until ... - moguće je odrediti dokad zadržati kolačiće, npr. dok je Firefox otvoren
Postoji i gumb Exceptions... (engl. izuzeci) na kojima je moguće navesti koje će kolačiće Firefox uvijek prihvaćati ili pak uvijek blokirati. Postoji već definiran popis blokiranih kolačića, koji imaju veze sa zlonamjernih internetskim stranicama.
Internet Explorer
[uredi | uredi izvor]U Internet Exploreru pod Internet Options postoji kartica Privacy, sa klizačem kojim se može odrediti kako će preglednik postupati sa kolačićima. Postoji 6 razina, a navest ćemo ih počevši od najstrože do najliberalnije.
- Block All Cookies - blokira sve kolačiće, a one koji se već nalaze na kompjuteru siteovi ne mogu pročitati
- High - visoka sigurnost
- Medium High - srednje visoka sigurnost
- Medium Low - niža srednja sigurnost
- Low - niska sigurnost
- Allow All Cookies - prihvaća sve kolačiće