HTTP-küpsis

Allikas: Vikipeedia

Küpsis (tuntud ka kui Cookie, HTTP cookie, HTTP küpsis) on tekstikujuline andmeblokk kliendi veebilehitsejas, mida saadetakse määratud domeenile[viide?] iga kord, kui klient teeb sinna päringu. Niimoodi saab server tuvastada kliendi päringu teiste omadest ja pakkuda talle isikupärastatud andmeid. Küpsiseid võib kasutada veebilehtedele sisse logimiseks, eelistuste salvestamiseks ja ostukäru sisemuse meelespidamiseks.

Teostus[muuda | redigeeri lähteteksti]

Näide küpsise kasutamisest, kus veebilehitseja saab serverilt koos lehega ka küpsise ning teist lehte pärides saadab tagasi ka küpsise

Küpsis sisaldab vähemalt ühte nime-väärtuse paari, mis sisaldab endas informatsiooni. Küpsis saadetakse esmalt serverist veebilehitsejale HTTP päises ja pärast saadab veebilehitseja serverile sama küpsise tagasi iga kord, kui ta teeb sinna päringu.

Küpsistel võib olla aegumistähtaeg, millal nad hoitakse veebilehitseja poolt alles. Ilma aegumistähtajata küpsised kustutatakse koos veebilehitseja sulgemisega. Kasutajad võivad ka ise muuta veebilehitseja seadeid, et küpsiste kasutamine oleks keelatud, nad säiliks vähem või kustutada neid käsitsi, et säästa kettaruumi ja hoida privaatsust. Antiviirused kustutavad sageli teatud küpsised, mis võivad oluliselt vähendada kliendi privaatsust.

Ajalugu[muuda | redigeeri lähteteksti]

Nimi küpsis tuleb sarnasusest õnneküpsisega (fortune cookie), sest mõlemad sisaldavad peidetud informatsiooni endas. Internetis küpsiste kasutamise idee pärineb aastast 1994[1], kui programmeerija Lou Montulli töötas firmas Netscape Communications, mis arendas elektroonilise kaubanduse rakendusi. Lou ja John Giannandrea koostasid algse Netscape küpsise spetsifikatsiooni ning küpsiseid toetas juba samal aastal Mosaic Netscape versioon 0,9beta, mis tuli välja 13. oktoobril 1994.[2] Algselt kasutati küpsiseid kontrollimaks, kas Netscape veebilehe külastajad olid sellel lehel juba varem käinud.

Kasutusalad[muuda | redigeeri lähteteksti]

Seansi haldus[muuda | redigeeri lähteteksti]

Tüüpiliselt saadab lehe esmakülastusel server veebilehitsejale seansiküpsise (session cookie), millel on unikaalne väärtus. Kõik järgnevad veebilehitseja päringud ei ole serveri jaoks uue külalise päringud, vaid sama unikaalse seansi küpsise ehk ühe kliendi päringud. Server saab meeles pidada kliendi tegevusi ning klient ei pea enam sisestama informatsiooni, mida ta on juba jaganud serveriga. Klient saab ennast sisse logida veebilehele, panna virtuaalsesse ostukärusse tooteid, muuta veebilehe keelt või muuta teistmoodi endale veebilehte isikupärasemaks kõigest ühe küpsise salvestamisega. Seansi halduses on veebilehitsejal salvestatud seansiküpsis ja kõik andmed, mis on kliendiga seotud, on serveri andmebaasis. Kuna seansiküpsised tüüpiliselt ei oma aegumistähtaega ja nad unustatakse veebilehe sulgudes, siis peab ka veebiportaalidesse iga külastuskord sisse logima

Isikupärastamine[muuda | redigeeri lähteteksti]

Küpsiseid võib kasutada ka eelmiste külastuskordade eelistuste meelespidamiseks. Nende küpsiste aegumistähtaeg on pikem, et valitud seaded oleks alles ka pärastpoole. Näiteks sisse logides võib olla valik jäta mind meelde (remember me), mida märkides saadetakse sisse logimisel kliendile lisaks seansiküpsisele veel üks pikemaajaline küpsis, mis sisaldab infot konto identifitseerimiseks. Kuigi veebilehitseja sulgudes kaob ka seansiküpsis, jääb pikemaajaline küpsis alles ning kunagi hiljem samale lehele sattudes tunneb server kliendi ära ning logib ta automaatselt sisse.

Sageli jäetakse ka meelde kaustaja keele eelistused, mistõttu kord veebiportaalis omale sobiva keele valinud klient võib ka järgnevatel külastustel hankida informatsiooni samas keeles. Alles saab hoida ka andmeid, milliseid foorumi teemasid klient juba lugenud on, kui mitu vastet soovib klient otsides saada või millist kujundust soovib klient veebilehel kasutada.

Jälgimine[muuda | redigeeri lähteteksti]

Jälitamisküpsised (tracking cookie) peavad tavaliselt meeles ainult veebilehe külastust. Külastusstatistikat tegevad programmid saadavad esmakordsel külastusel veebilehitsejale küpsise. Iga kord lehele tagasi tulles saadab veebilehitseja sama küpsise tagasi ja seetõttu teab ka jälgimisprogramm, et kasutaja on lehel juba käinud ja ei loe tega mitmekordselt uueks külastajaks. Sel moel saab külastusstatistikat tegev programm lugeda iga külalist ühekordselt ja anda adekvaatsemat infot külaliste arvu kohta ajavahemikus.

Küpsist on võimalik salvestada iga HTTP päringu jooksul ja seetõttu saavad küpsiseid jagada ka veebilehel sisalduvad failid (pildid, JavaScript, CSS), millele teeb veebilehitseja päringu. Kliendi külastatud lehekülgi on võimalik jälgida, kui kõigis nendes lehtedes sisaldub sama domeeni fail (näiteks reklaam). Reklaamifirmad (näiteks Google AdWords) saavad tänu küpsisele siduda külastatud leheküljed ühe kliendiga ja hoida tema veebiharjumuste kohta andmebaasi.

Rakendamine[muuda | redigeeri lähteteksti]

Näidispäised[muuda | redigeeri lähteteksti]

Veebilehitseja pöördumine Google.ee poole

Host www.google.ee
User-Agent Mozilla/4.0 (MSIE 6.0; Windows NT 5.1)
Keep-Alive 115
Connection keep-alive

Google.ee vastus:

Date Tue, 8 Dec 2010 20:35:25 GMT
Expires -1
Cache-Control private, max-age=0
Content-Type text/html; charset=UTF-8
Set-Cookie NID=41=xmsDYxVuW4_lNKfM23bScs8-DXsq3cRDxWchipGjJzN8sX6Q_bFsq9scXg8GFKOJXctkfvoLuX0 LSEWjY_RbiF7kzf_WCu9jd7zNILaenhMWATu6touxX_8lv9RzLacS; expires=Thu, 9-Jun-2011 20:35:25 GMT; path=/; domain=.google.ee; HttpOnly
Server gws
Content-Length 4985
X-XSS-Protection 1; mode=block

Veebilehitseja uus pöördumine Google.ee poole:

Host www.google.ee
User-Agent Mozilla/4.0 (MSIE 6.0; Windows NT 5.1)
Keep-Alive 115
Connection keep-alive
Cookie NID=41=xmsDYxVuW4_lNKfM23bScs8-DXsq3cRDxWchipGjJzN8sX6Q_bFsq9scXg8GFKOJXctkfvoLuX0 LSEWjY_RbiF7kzf_WCu9jd7zNILaenhMWATu6touxX_8lv9RzLacS

Antud näiteks külastati esmakordselt google.ee lehte. Google.ee saatis set-cookie käsuga küpsised ning kui google.ee lehele teha järjekordne päring, siis saadeb veebilehitseja välja sama küpsise.

Küpsise seadmine PHP-toega veebiserveris[muuda | redigeeri lähteteksti]

PHP kood:[3]

Süntaks: bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )

setcookie("TulemusiLehel", „30“, time()+3600, "/~rasmus/", ".example.com", 1, 1);

Veebilehitseja saab käsu salvestada küpsis, mille nimi on „TulemusiLehel“ ning väärtus on 30. See küpsis kehtib kuni Unix-ajani praegu+3600 sekundit ehk ta muutub kehtetuks ühe tunni pärast. Küpsis saadetakse välja ainult nendelt lehekülgedelt, mis asuvad domeenil example.com või tema aladomeenidelt (. märk example.com-i ees) ning mis asub kataloogis ~rasmus.

Eelviimane argument 1 näitab, et küpsist tuleks kliendile edastada ainult turvatud ühenduse (HTTPS) korral. Käsu viimane argument 1 tähendab, et küpsisele peaks pääsema ligi ainult HTTP protokolliga ja ei ole ligipääsetav scriptimiskeeltele, näiteks javascriptile. Kohustuslikuks argumendiks on ainult esimene, küpsise nimi.

Küpsise seadmine Javascriptiga[muuda | redigeeri lähteteksti]

JavaScripti kood:[4]

Süntaks: document.cookie = "name; expires; path; domain; secure";

document.cookie = "TulemusiLehel=30; expires=12/12/2010 00:00:00";

Alternatiivid[muuda | redigeeri lähteteksti]

IP aadress[muuda | redigeeri lähteteksti]

Kuna igal HTTP käsul saadetakse serverile ka kliendi IP-aadress, siis saab klienti eristada ka ilma küpsisteta teistest päringutest. Ühte välist IP-aadressit võivad jagada aga mitu arvutit samas kohtvõrgus (näiteks korruselamu, jagatud Interneti ühendusega eramajad, klassitoad, konverentsisaalid, Wifi võrk jne), seetõttu võib server pidada samaks kliendiks ka teist klienti, kes on sama IP-aadressiga, kuigi nad on erinevate arvutite taga. Kui veebiserver teeb autentimist ainult IP-aadressi kaudu, siis võib ühe kohtvõrgu kliendi sisselogides serverisse olla ka kõik teised kohtvõrgu kliendid sisse logitud.

URL aadress[muuda | redigeeri lähteteksti]

Server võib alguses määrata kliendile unikaalse kombinatsiooni ja lisada selle enne kliendile saatmist kombinatsiooni iga veebiaadressi lõppu. Kui klient vajutab lingile ja liigub uuele leheküljele, siis saadetakse URLiga ka unikaalne kombinatsioon ja server tunneb kliendi ära. Niimoodi säilitatakse kliendi informatsiooni aga ainult senikaua, kuni ta kasutab selle sama lehe siselinke. Kui ta tuleks samale lehele uuesti tagasi otsingumootori kaudu, siis ei kanna ta enam kaasas oma unikaalset kombinatsiooni ja ta loetakse esmakordseks külastajaks. Vastupidiselt oleks aga pärast veebilehele sisse logimist ja lehe lingi teisele kliendile saatmist ka teine klient sisse logitud sama kasutajaga.

Varjatud vorm[muuda | redigeeri lähteteksti]

Server võib alguses määrata kliendile unikaalse kombinatsiooni ja lisada selle HTML vormi (<form method=“post“>) elemendiks. Kui klient teeb HTTP POST käsu, siis ta saadab ka kõik vormi liikmed ära koos unikaalse kombinatsiooniga. Kuna vormi elemendid võivad olla ka peidetud, siis võib autentimine olla kliendile varjatud. Samuti ei ole ka teine klient sisse logitud, kui talle saata lehekülje aadress, sest informatsiooni ei hoita URLis. Teistelt serveritelt tulemisel ei ole aga salvestatud kliendi andmeid.

Puudused[muuda | redigeeri lähteteksti]

Puudulik autentimine[muuda | redigeeri lähteteksti]

Kuna küpsised on salvestatud veebilehitsejate poolt, siis saadetakse serveritele küpsiseid ainult sama veebilehitsejaga külastades. Kui kasutada teist veebilehitsejat või teist arvutit, siis küpsiseid ei saadeta ja klienti koheldakse kui uut külastajat. Analoogselt käsitletakse sama inimesena aga ka teisi inimesi, kes kasutavad sama veebilehitsejat. Kui teise inimese arvutit või avalikku Interneti-punkti, siis võivad veebiserverid klienti ekslikult kellekski teiseks pidada.

Küpsiste vargus[muuda | redigeeri lähteteksti]

Kui Interneti-ühendus pole krüpteeritud, siis on ka sama kohtvõrgu liikmetel ligipääs teiste klientide võrguliiklusele, sealhulgas on võimalik vaadelda ka küpsiste sisu. Kui saata teise kliendi küpsis enda arvutist samale lehele, siis ei tee server küpsise-autentimise korral kahel kliendil vahet. Nii on võimalik logida ennast sisse teiste nimel. Mõned veebiportaalid (näiteks Facebook) kasutavad krüpteeritud ühendust ainult sisse logides, et kasutajanimi ja parool oleks varjatud. Kuna pärast lehel sirvides pole ühendus jõudluse pärast enam krüpteeritud, siis on ka küpsised turvamata ja võrguliiklust pealt kuulates on võimalik maskeeruda ennast teisteks kasutajateks. Eriti suur oht langeda identiteedivarguse ohvriks on krüpteerimata Wifi võrkudes, aga ARP mürgitamisega (ARP spoofing) on võimalik ka traadiga ühenduse kohtvõrgus jagada soovimatult oma andmeid ja lasta nii oma küpsiseid kopeerida.

Privaatsus[muuda | redigeeri lähteteksti]

Kuna küpsiste salvestamine käib automaatselt ja enamikul veebilehitsejatel on automaatselt lubatud ka kolmandal osapoolel (third-party cookies) salvestada küpsiseid, siis on võimalik kliendi Interneti külastusi jälgida vartatult. Nii võivad serverid koostada suure andmebaasi inimeste harjumustest, eelistustest ja veebilehtede külastamise ajaloost, mis rikub privaatsust ja kaotab ära Internetis anonüümsuse.

Vaata ka[muuda | redigeeri lähteteksti]

Viited[muuda | redigeeri lähteteksti]

  1. John Schwartz. Giving the Web a memory cost its users privacy. New York Times. September 4, 2001
  2. "Press Release: Netscape Communications Offers New Network Navigator Free On The Internet". Web.archive.org. Originaali arhiivikoopia seisuga 7.12.2006. Vaadatud 22.05.2010.
  3. PHP manuaal: Setcookie süntaks
  4. w3schools: document.cookie näide

Välislingid[muuda | redigeeri lähteteksti]