Mine sisu juurde

HTTP-küpsis: erinevus redaktsioonide vahel

Allikas: Vikipeedia
Eemaldatud sisu Lisatud sisu
P Tühistati kasutaja 94.203.171.60 (arutelu) tehtud muudatus ja pöörduti tagasi viimasele muudatusele, mille tegi Suwa.
Märgis: Tühistamine
 
(ei näidata 21 kasutaja 36 vahepealset redaktsiooni)
1. rida: 1. rida:
{{keeletoimeta}}
'''Küpsis''' (tuntud ka kui '''Cookie''', '''HTTP cookie''', '''HTTP küpsis''') on tekstikujuline andmeblokk kliendi veebilehitsejas, mida saadetakse määratud domeenile 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.
'''Küpsis''' (ka '''HTTP-küpsis''' või '''küpsisefail''', inglise keeles ''cookie'', ''HTTP cookie'') on tekstikujuline [[andmeplokk]] kliendi [[veebibrauser]]is, mida saadetakse määratud domeenile{{lisa viide}} iga kord, kui klient teeb sinna päringu. Nii saab server vastava kliendi päringu eristada teiste omadest ja pakkuda talle isikupärastatud andmeid. Küpsiseid võib kasutada veebilehtedele sisselogimiseks, eelistuste salvestamiseks ja ostukorvi sisu meelespidamiseks.


== Teostus ==
== Teostus ==
[[Pilt:HTTP küpsise vahetus.svg|pisi|Näide küpsise kasutamisest, kus veebibrauser 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 informatsiooni. Küpsis saadetakse esmalt serverist veebibrauserile HTTP päises ja pärast saadab veebibrauser serverile sama küpsise tagasi iga kord, kui ta teeb sinna päringu.


Küpsistel võib olla aegumistähtaeg, kui kaua veebibrauser neid alles hoiab. Aegumistähtajata küpsised kustutatakse veebibrauseri sulgemisel. Kasutajad võivad ka ise veebibrauseri seadeid muuta, et küpsiste kasutamine oleks keelatud või nad säiliksid vähem, või kustutada neid käsitsi, et säästa kettaruumi ja hoida privaatsust. Viirusetõrjeprogrammid kustutavad sageli teatud küpsised, mis võivad arvutikasutaja privaatsust vähendada.
[[File:HTTP küpsise vahetus.svg|thumb|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 ==
== Ajalugu ==
Nimetus "küpsis" tuleb sarnasusest õnneküpsisega (''fortune cookie''), sest mõlemad sisaldavad peidetud informatsiooni. Internetis küpsiste kasutamise idee pärineb aastast 1994<ref name="BK8JZ" />, kui programmeerija Lou Montulli töötas firmas [[Netscape Communications]], mis arendas elektroonilise kaubanduse rakendusi. Lou ja John Giannandrea koostasid algse Netscape'i küpsise spetsifikatsiooni ning küpsiseid toetas juba samal aastal Mosaic Netscape'i versioon 0,9beta, mis tuli välja 13. oktoobril 1994.<ref name="2lTxA" /> Algul kasutati küpsiseid kontrollimaks, kas Netscape'i veebilehe külastajad olid sellel lehel juba varem käinud.

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<ref>John Schwartz. [http://www.nytimes.com/2001/09/04/technology/04COOK.html Giving the Web a memory cost its users privacy]. New York Times. September 4, 2001</ref>, 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.<ref>{{cite web|url=http://wp.netscape.com/newsref/pr/newsrelease1.html |title=Press Release: Netscape Communications Offers New Network Navigator Free On The Internet |publisher=Web.archive.org |date= |accessdate=2010-05-22 |archiveurl = http://web.archive.org/web/20061207145832/http://wp.netscape.com/newsref/pr/newsrelease1.html |archivedate = 2006-12-07}}</ref> Algselt kasutati küpsiseid kontrollimaks, kas Netscape veebilehe külastajad olid sellel lehel juba varem käinud.


== Kasutusalad ==
== Kasutusalad ==
=== Seansi haldus ===
=== Seansi haldus ===
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
Tüüpiliselt saadab lehe esmakülastusel server veebibrauserile seansiküpsise (''session cookie''), millel on unikaalne väärtus. Kõik järgmised veebibrauseri 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 ostukorvi tooteid, muuta veebilehe keelt või muuta teistmoodi endale veebilehte isikupärasemaks kõigest ühe küpsise salvestamisega. Seansi halduses on veebibrauseril 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 igal külastuskorral sisse logima.


=== Isikupärastamine ===
=== Isikupärastamine ===
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.
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 veebibrauseri 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.
Sageli jäetakse ka meelde kasutaja keele-eelistused, mistõttu kord veebiportaalis omale sobiva keele valinud klient võib ka järgmisetel külastustel hankida informatsiooni samas keeles. Alles saab hoida ka andmeid, milliseid foorumi teemasid klient on juba lugenud, mitu vastet soovib klient otsingufunktsiooniga saada või millist kujundust soovib klient veebilehel kasutada.


=== Jälgimine ===
=== Jälgimine ===
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.
Jälitamisküpsised (''tracking cookie'') peavad tavaliselt meeles ainult veebilehe külastust. Külastusstatistikat tegevad programmid saadavad esmakordsel külastusel veebibrauserile küpsise. Iga kord lehele tagasi tulles saadab veebibrauser sama küpsise tagasi ja seetõttu teab ka jälgimisprogramm, et kasutaja on lehel juba käinud ega loe teda mitu korda uueks külastajaks. Sel moel saab külastusstatistikat tegev programm lugeda iga külalist korra 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.
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 veebibrauser 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 pidada tema veebiharjumuste kohta andmebaasi.


== Rakendamine ==
== Rakendamine ==
=== Näidispäised ===
=== Näidispäised ===
Veebilehitseja pöördumine Google.ee poole
Veebibrauseri pöördumine Google.ee poole
{|
{|
|
|
60. rida: 59. rida:
|}
|}


Veebilehitseja uus pöördumine Google.ee poole:
Veebibrauseri uus pöördumine Google.ee poole:
{|
{|
|
|
75. rida: 74. rida:
|}
|}


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.
Selles näites 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, saadab veebibrauser välja sama küpsise.


=== Küpsise seadmine PHP-toega veebiserveris ===
=== Küpsise seadmine PHP-toega veebiserveris ===
[[PHP]] kood:<ref>PHP manuaal: [http://ee.php.net/setcookie Setcookie] süntaks</ref>
[[PHP]] kood:<ref name="lLt1Q" />
{|
{|
|
|
84. rida: 83. rida:
<div style="border:solid thin; padding:0 1em;">
<div style="border:solid thin; padding:0 1em;">
<tt>
<tt>
Süntaks: bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )<br/><br/>
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);
setcookie("TulemusiLehel", "30", time()+3600, "/~rasmus/", ".example.com", 1, 1);
</tt>
</tt>
</div>
</div>
91. rida: 91. rida:
|}
|}


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.
Veebibrauser 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.
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 skriptimiskeeltele, näiteks JavaScriptile. Kohustuslikuks argumendiks on ainult esimene, küpsise nimi.


=== Küpsise seadmine Javascriptiga ===
=== Küpsise seadmine JavaScriptiga ===
[[JavaScript|JavaScripti]] kood:<ref>w3schools: [http://www.w3schools.com/JS/js_cookies.asp document.cookie] näide</ref>
[[JavaScript]]i kood:<ref name="ES9Vy" />
{|
{|
|
|
102. rida: 102. rida:
<div style="border:solid thin; padding:0 1em;">
<div style="border:solid thin; padding:0 1em;">
<tt>
<tt>
Süntaks: document.cookie = "name; expires; path; domain; secure";<br/><br/>
Süntaks: document.cookie = "name; expires; path; domain; secure";

document.cookie = "TulemusiLehel=30; expires=12/12/2010 00:00:00";
document.cookie = "TulemusiLehel=30; expires=12/12/2010 00:00:00";
</tt>
</tt>
110. rida: 111. rida:


== Alternatiivid ==
== Alternatiivid ==
=== IP aadress ===
=== IP-aadress ===
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-aadress|IP-aadressit]] võivad jagada aga mitu arvutit samas [[Kohtvõrk|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-aadress|IP-aadressiga]], kuigi nad on erinevate arvutite taga. Kui veebiserver teeb autentimist ainult [[IP-aadress|IP-aadressi]] kaudu, siis võib ühe [[Kohtvõrk|kohtvõrgu]] kliendi sisselogides serverisse olla ka kõik teised [[Kohtvõrk|kohtvõrgu]] kliendid sisse logitud.
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-aadressi võivad jagada aga mitu arvutit samas [[Kohtvõrk|kohtvõrgus]] (näiteks korruselamu, jagatud Interneti ühendusega eramajad, klassitoad, konverentsisaalid, Wi-Fi-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 sisse logides serverisse olla ka kõik teised kohtvõrgu kliendid sisse logitud.


=== URL aadress ===
===[[URL]]-aadress===
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 [[Internetiaadress|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.
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 [[Internetiaadress|URLiga]] ka unikaalne kombinatsioon ja server tunneb kliendi ära. Niimoodi säilitatakse kliendi informatsiooni aga ainult seni, 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. Vastupidi oleks aga pärast veebilehele sisselogimist ja lehe lingi teisele kliendile saatmist ka teine klient sisse logitud sama kasutajaga.


=== Varjatud vorm ===
=== Varjatud vorm ===
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.
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 URL-is. Teistelt serveritelt tulemisel ei ole aga salvestatud kliendi andmeid.


== Puudused ==
== Puudused ==
=== Puudulik autentimine ===
=== Puudulik autentimine ===
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.
Kuna küpsised on salvestatud veebibrauserite poolt, siis saadetakse serveritele küpsiseid ainult sama veebibrauseriga külastades. Kui kasutada teist veebibrauserit 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 veebibrauserit. Kui teise inimese arvutit või avalikku Interneti-punkti, siis võivad veebiserverid klienti ekslikult kellekski teiseks pidada.


=== Küpsiste vargus ===
=== Küpsiste vargus ===
Kui Interneti-ühendus pole [[HTTPS|krüpteeritud]], siis on ka sama [[Kohtvõrk|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.
Kui Interneti-ühendus pole [[HTTPS|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 Wi-Fi 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 ===
=== Privaatsus ===
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.
Kuna küpsiste salvestamine käib automaatselt ja enamikul veebibrauseritel on automaatselt lubatud ka kolmandal osapoolel (third-party cookies) salvestada küpsiseid, siis on võimalik kliendi Interneti külastusi jälgida varjatult. Nii võivad serverid koostada suure andmebaasi inimeste harjumustest, eelistustest ja veebilehtede külastamise ajaloost, mis rikub privaatsust ja kaotab ära Internetis anonüümsuse.

[[Pilt:D.Iceweasel3.0.6-Multiple cookies--Go Green theme-Knoppix6.0.1.png|pisi|Küpsiste teavitusaknad Firefox 3.0-s]]
[[Mozilla Firefox]] kuni versioonini 43.0 (k.a.) sisaldab küpsiste teavitust, aga see tuleb lehitseja seadistustes [[:Pilt:Firefox18.0.1-Preferences-Privacy-Cookies--Knoppix671.png|eraldi sisse lülitada]]. Alates Firefoxi versioonist 44.0 küpsiste teavitust enam pole, kuigi eraldi küpsisehaldamise seaded on veel alles jäetud.


== Vaata ka ==
==Vaata ka==
*[[fbclid|facebook click identificator]]
* [[Brauser]]
*[[gclid|google click identificator]]
* [[Internetiprotokoll]]
*[[Internetiprotokoll]]
*[[Kasutaja nõusolek ja selle vorm küpsiste paigaldamiseks kasutaja arvutisse]]
*[[:en:Social media analytics]]


== Viited==
== Viited==
{{viited|allikad=
{{reflist|2}}
<ref name="BK8JZ">John Schwartz. [http://www.nytimes.com/2001/09/04/technology/04COOK.html Giving the Web a memory cost its users privacy]. New York Times. September 4, 2001</ref>
<ref name="2lTxA">{{cite web |url=http://wp.netscape.com/newsref/pr/newsrelease1.html |title=Press Release: Netscape Communications Offers New Network Navigator Free On The Internet |publisher=Web.archive.org |date= |accessdate=22.05.2010 |archiveurl=https://web.archive.org/web/20061207145832/http://wp.netscape.com/newsref/pr/newsrelease1.html |archivedate=7. detsember 2006 |url-status=dead }}</ref>
<ref name="lLt1Q">PHP manuaal: [http://ee.php.net/setcookie Setcookie] süntaks</ref>
<ref name="ES9Vy">w3schools: [http://www.w3schools.com/JS/js_cookies.asp document.cookie] näide</ref>
}}


== Välislingid ==
== Välislingid ==
140. rida: 152. rida:
* [http://support.mozilla.com/en-US/kb/Cookies Firefoxi abileht: Küpsised]
* [http://support.mozilla.com/en-US/kb/Cookies Firefoxi abileht: Küpsised]


{{Veebilehitsejad}}
[[Kategooria:Veeb| ]]


[[Kategooria:Veeb]]
{{Link FA|ro}}
[[af:Koekie (rekenaarwetenskap)]]
[[als:Cookie]]
[[ar:سجل المتصفح]]
[[ba:Cookie]]
[[bg:HTTP-бисквитка]]
[[ca:Galeta (informàtica)]]
[[cs:HTTP cookie]]
[[da:Cookie]]
[[de:HTTP-Cookie]]
[[en:HTTP cookie]]
[[el:HTTP cookies]]
[[es:Cookie]]
[[eo:Kuketo]]
[[eu:Cookie]]
[[fa:کوکی اچ‌تی‌تی‌پی]]
[[fr:Cookie (informatique)]]
[[ko:HTTP 쿠키]]
[[id:HTTP cookie]]
[[is:Kaka (tölvunarfræði)]]
[[it:Cookie]]
[[he:עוגייה (אינטרנט)]]
[[sw:Kuki]]
[[lv:Sīkdatne]]
[[li:Cookie]]
[[hu:HTTP-süti]]
[[mr:स्मृतीशेष]]
[[nl:Cookie (internet)]]
[[nds-nl:Koekien (internet)]]
[[ja:HTTP cookie]]
[[no:Informasjonskapsel]]
[[pl:Ciasteczko]]
[[pt:Cookie]]
[[ro:Cookie]]
[[ru:HTTP cookie]]
[[simple:HTTP cookie]]
[[fi:Eväste]]
[[sv:Cookie]]
[[th:เอชทีทีพีคุกกี้]]
[[tr:Çerez]]
[[uk:Куки]]
[[vi:Cookie]]
[[yi:קוקי]]
[[zh-yue:HTTP曲奇]]
[[zh:Cookie]]

Viimane redaktsioon: 20. detsember 2023, kell 13:56

Küpsis (ka HTTP-küpsis või küpsisefail, inglise keeles cookie, HTTP cookie) on tekstikujuline andmeplokk kliendi veebibrauseris, mida saadetakse määratud domeenile[viide?] iga kord, kui klient teeb sinna päringu. Nii saab server vastava kliendi päringu eristada teiste omadest ja pakkuda talle isikupärastatud andmeid. Küpsiseid võib kasutada veebilehtedele sisselogimiseks, eelistuste salvestamiseks ja ostukorvi sisu meelespidamiseks.

Teostus[muuda | muuda lähteteksti]

Näide küpsise kasutamisest, kus veebibrauser 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 informatsiooni. Küpsis saadetakse esmalt serverist veebibrauserile HTTP päises ja pärast saadab veebibrauser serverile sama küpsise tagasi iga kord, kui ta teeb sinna päringu.

Küpsistel võib olla aegumistähtaeg, kui kaua veebibrauser neid alles hoiab. Aegumistähtajata küpsised kustutatakse veebibrauseri sulgemisel. Kasutajad võivad ka ise veebibrauseri seadeid muuta, et küpsiste kasutamine oleks keelatud või nad säiliksid vähem, või kustutada neid käsitsi, et säästa kettaruumi ja hoida privaatsust. Viirusetõrjeprogrammid kustutavad sageli teatud küpsised, mis võivad arvutikasutaja privaatsust vähendada.

Ajalugu[muuda | muuda lähteteksti]

Nimetus "küpsis" tuleb sarnasusest õnneküpsisega (fortune cookie), sest mõlemad sisaldavad peidetud informatsiooni. 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'i küpsise spetsifikatsiooni ning küpsiseid toetas juba samal aastal Mosaic Netscape'i versioon 0,9beta, mis tuli välja 13. oktoobril 1994.[2] Algul kasutati küpsiseid kontrollimaks, kas Netscape'i veebilehe külastajad olid sellel lehel juba varem käinud.

Kasutusalad[muuda | muuda lähteteksti]

Seansi haldus[muuda | muuda lähteteksti]

Tüüpiliselt saadab lehe esmakülastusel server veebibrauserile seansiküpsise (session cookie), millel on unikaalne väärtus. Kõik järgmised veebibrauseri 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 ostukorvi tooteid, muuta veebilehe keelt või muuta teistmoodi endale veebilehte isikupärasemaks kõigest ühe küpsise salvestamisega. Seansi halduses on veebibrauseril 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 igal külastuskorral sisse logima.

Isikupärastamine[muuda | muuda 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 veebibrauseri 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 kasutaja keele-eelistused, mistõttu kord veebiportaalis omale sobiva keele valinud klient võib ka järgmisetel külastustel hankida informatsiooni samas keeles. Alles saab hoida ka andmeid, milliseid foorumi teemasid klient on juba lugenud, mitu vastet soovib klient otsingufunktsiooniga saada või millist kujundust soovib klient veebilehel kasutada.

Jälgimine[muuda | muuda lähteteksti]

Jälitamisküpsised (tracking cookie) peavad tavaliselt meeles ainult veebilehe külastust. Külastusstatistikat tegevad programmid saadavad esmakordsel külastusel veebibrauserile küpsise. Iga kord lehele tagasi tulles saadab veebibrauser sama küpsise tagasi ja seetõttu teab ka jälgimisprogramm, et kasutaja on lehel juba käinud ega loe teda mitu korda uueks külastajaks. Sel moel saab külastusstatistikat tegev programm lugeda iga külalist korra 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 veebibrauser 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 pidada tema veebiharjumuste kohta andmebaasi.

Rakendamine[muuda | muuda lähteteksti]

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

Veebibrauseri 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

Veebibrauseri 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

Selles näites 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, saadab veebibrauser välja sama küpsise.

Küpsise seadmine PHP-toega veebiserveris[muuda | muuda 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);

Veebibrauser 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 skriptimiskeeltele, näiteks JavaScriptile. Kohustuslikuks argumendiks on ainult esimene, küpsise nimi.

Küpsise seadmine JavaScriptiga[muuda | muuda 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 | muuda lähteteksti]

IP-aadress[muuda | muuda 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-aadressi võivad jagada aga mitu arvutit samas kohtvõrgus (näiteks korruselamu, jagatud Interneti ühendusega eramajad, klassitoad, konverentsisaalid, Wi-Fi-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 sisse logides serverisse olla ka kõik teised kohtvõrgu kliendid sisse logitud.

URL-aadress[muuda | muuda 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 seni, 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. Vastupidi oleks aga pärast veebilehele sisselogimist ja lehe lingi teisele kliendile saatmist ka teine klient sisse logitud sama kasutajaga.

Varjatud vorm[muuda | muuda 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 URL-is. Teistelt serveritelt tulemisel ei ole aga salvestatud kliendi andmeid.

Puudused[muuda | muuda lähteteksti]

Puudulik autentimine[muuda | muuda lähteteksti]

Kuna küpsised on salvestatud veebibrauserite poolt, siis saadetakse serveritele küpsiseid ainult sama veebibrauseriga külastades. Kui kasutada teist veebibrauserit 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 veebibrauserit. Kui teise inimese arvutit või avalikku Interneti-punkti, siis võivad veebiserverid klienti ekslikult kellekski teiseks pidada.

Küpsiste vargus[muuda | muuda 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 Wi-Fi 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 | muuda lähteteksti]

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

Küpsiste teavitusaknad Firefox 3.0-s

Mozilla Firefox kuni versioonini 43.0 (k.a.) sisaldab küpsiste teavitust, aga see tuleb lehitseja seadistustes eraldi sisse lülitada. Alates Firefoxi versioonist 44.0 küpsiste teavitust enam pole, kuigi eraldi küpsisehaldamise seaded on veel alles jäetud.

Vaata ka[muuda | muuda lähteteksti]

Viited[muuda | muuda 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. detsember 2006. Vaadatud 22.05.2010.
  3. PHP manuaal: Setcookie süntaks
  4. w3schools: document.cookie näide

Välislingid[muuda | muuda lähteteksti]