Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

TDAT2004 Datakommunikasjon med nettverksprogrammering. Oppgave nummer 5, Informasjonskapsler (cookies). Deltakere er Olav Reppe Husby, Magnus Storhaug Hammer og Sindre Hammerø Kroknes. 

Widget Connector
urlhttps://www.youtube.com/watch?v=vF9Qy_HdzCA

Table of Contents

1. Innledning

Informasjonskapsler, eller cookies som de også kalles, hører hjemme i applikasjonslaget. En informasjonskapsel er en liten mengde data som sendes fra en nettside og som lagres på brukerens datamaskin, de er designet for å ha en pålitelig mekanisme for å huske tilstandsinformasjon eller å lagre informasjon om brukerens aktiviteter på internett (knapper som er klikket på, innlogging, eller hvilke nettsider som har blitt besøkt).

Historien for informasjonskapsler går helt tilbake til juni 1994, da Lou Montulli (som fikk ideen med informasjonskapsler) jobbet for Netscape1. Netscape var leid inn av MCI for å lage et system for e-handel, men produkteierne ville ikke lagre uferdige transaksjoner på serveren, dette løste de ved å lagre tilstanden på brukerens datamaskin1. Allerede april 1995 begynte en gruppe i IETF å jobbe med å standardisere informasjonskapsler, i februar 1997 ble spesifikasjonen RFC 2109 ferdigstilt2. I oktober 2000 ble RFC 2109 erstattet med RFC 29653. En definitiv spesifikasjon på hvordan informasjonskapsler skal brukes ble gitt ut april 20114, som RFC 62655. I dag gjør IETF vedtak rundt standarden om informasjonskapsler.



2. Ønsket funksjonalitet  

Oppgaven man skal løse er at man ønsker å lagre små mengder data hos klienten for å huske brukerens tilstand eller aktivitet på nettsiden. Og slik at man slipper å lagre absolutt all data på serversiden. Det kan være informasjon som brukernavn og passord(kryptert), hvilke knapper bruker har trykket på, og tidligere utfylte skjema. Man kan også lagre brukerens preferanser, som hvilket språk man vil ha, slik at man slipper å velge det hver gang man bruker nettsiden.

Informasjonskapsler brukes ofte til sessjonshåndtering, for å fortelle serveren om brukeren er logget inn, og hvilken bruker det er. De blir også brukt for å lagre informasjon om brukere for bruk med målrettet reklame.


3. Virkemåte

For å opprette og endre informasjonskapsler benyttes HTTP headeren Set-Cookie. Når en nettleser mottar en slik forespørsel oppretter den en informasjonskapsel og sender den med alle fremtidige forespørsler til serveren.

Set-Cookie har mange parametere, men bare navn/verdi-par er påkrevd.

 

HTTP/1.0 200 OK

Set-Cookie: tekst=hei

 

Informasjonskapselens utløpsdato settes med enten Expires eller Max-Age. Expires settes med HTTP-date timestamp, og Max-Age med tid i sekunder. Utløpsdato bestemmer når informasjonskapselen blir slettet fra nettleseren. Om utløpsdato ikke er satt slettes informasjonskapselen når sesjonen avsluttes, når nettleser lukkes.


Domain parameteren bestemmer hvilke verter informasjonskapselen skal sendes til.

Path parameteren spesifiserer en sti som må eksistere i URL for at informasjonskapselen skal sendes.

Secure setter et flagg som indikerer at informasjonskapselen kun skal sendes kryptert, med HTTPS.

HttpOnly flagget gjør at informasjonskapselen ikke er tilgjengelig for klientkode som JavaScript.

 

En informasjonskapsel identifiseres ved name, domain og path atributtene. For å endre en informasjonskapsel må en ny Set-Cookie header sendes, med samme name, domain og path. 

 

HTTP/1.0 200 OK

Set-Cookie:
 parameter=verdi;
 Expires=Thurs, 15 June 2017 21:47:38 GMT;
 Path=/;
 Domain=ntnu.no;
 Secure;
 HttpOnly;

 

Her lager vi en cookie med ett nøkkel-verdi par, som går ut 15 Juni, pathen er /, domenet er ntnu.no, og den er secure og httponly.

 

Bruk av cookies:

Lese cookie: It’s Learning eksempel


 

Her ser man hvordan man enkelt kan få tak i cookie i JavaScript ved å bruke document.cookie

Sette cookie: It’s Learning eksempel

Her ser man hvordan man kan legge til nøkkel-verdi par i cookie ved å bruke document.cookie  

Wireshark pakkefangst:

Ovenfor er en pakkefangst av en HTTP-header med en informasjonskapsel, her ser man at den valgte delen inneholder “TestCookie_1234=TestCookie_Value_1234”. TestCookie_1234 er da navnet på informasjonskapselen, og TestCookie_Value_1234 er verdien informasjonskapselen inneholder.


4. Referanser

Hvor finner man mer aktuelt lesestoff om dette temaet?

http://www.whatarecookies.com/ 

https://www.ntnu.edu/cookies

https://kb.iu.edu/d/agwm


Referanseliste:

  1. http://www.nytimes.com/2001/09/04/business/giving-web-a-memory-cost-its-users-privacy.html

  2. https://tools.ietf.org/html/rfc2109

  3. https://tools.ietf.org/html/rfc2965

  4. http://www.thesecuritypractice.com/the_security_practice/2011/03/http-state-management-mechanism-to-proposed-standard.html

  5. https://tools.ietf.org/html/rfc6265