Gå til indhold
atlas

Cookie

Også kendt som: HTTP-cookie, browsercookie

En lille tekstbid, som et websted beder browseren gemme og sende med tilbage ved hvert besøg, så stedet kan genkende den.

Kladde - dette opslag er endnu ikke gennemgået.

Formelt

Et navn og en værdi, som en server sætter i et HTTP-svar; browseren gemmer det for webstedet og lægger det på senere forespørgsler til samme sted, indtil det udløber, med markeringer, der begrænser, hvor og hvordan det må sendes.

Forklaret enkelt

Som garderobesedlen i teatret - du rækker den frem hver gang, og personalet ved, hvilken frakke der er din, uden at spørge om dit navn.

I praksis

Når en kunde logger ind i en dansk webshop, sætter butikken en cookie med et sessionsnummer, så kurven og login følger med, mens hun går fra side til side.

Hvorfor det betyder noget

Den, der har en login-cookie, behandles som dens ejer, så den skal skjules for kode på siden og aldrig sendes over ren HTTP; cookies, der sporer personer, kræver samtykke efter cookiereglerne.

Teknisk uddybning

Cookies blev indført af Netscape i 1994 og er i dag specificeret i RFC 6265 (april 2011), som beskrev browsernes faktiske adfærd, efter at de tidligere RFC 2109 og RFC 2965 slog fejl i praksis; IETF's revision, kendt som RFC 6265bis, fastlægger senere tilføjelser som SameSite og cookie-præfikser. En server sender én Set-Cookie-header pr. cookie i svaret, og browseren sender de matchende cookies tilbage som navn=værdi-par i én Cookie-header i forespørgslen. Attributter styrer rækkevidde og levetid: Expires eller Max-Age (Max-Age vinder, hvis begge er til stede; uden nogen af dem er det en sessionscookie), Domain (udeladt betyder kun den præcise vært; angivet betyder domænet og alle underdomæner, og et offentligt suffiks afvises), Path (en bekvemmelighed, ikke en sikkerhedsgrænse), Secure, HttpOnly og SameSite med værdierne Strict, Lax eller None, hvor None kræver Secure. RFC 6265 afsnit 6.1 beder browsere understøtte mindst 4096 byte pr. cookie, 50 cookies pr. domæne og 3000 i alt; Chrome begrænser levetiden til 400 dage.

Cookiernes afgrænsning er ældre end og forskellig fra same-origin policy: cookies er knyttet til vært eller domæne og sti, historisk ikke til skema eller port, så http- og https-udgaven af en vært og forskellige porte har traditionelt delt cookies. Et kompromitteret eller angriberstyret underdomæne kan derfor sætte cookies for sit overordnede domæne (cookie tossing) og fastlåse et offers session. Præfikserne __Secure- (skal have Secure) og __Host- (Secure, Path=/ og ingen Domain, altså kun værten) lader serveren opdage den slags injektion. SameSite arbejder med sitet (skema plus registrerbart domæne fra Public Suffix List), ikke med oprindelsen; Chrome gjorde Lax til standard for cookies uden attributten i 2020.

En sessionscookie er et bearer token, så alle veje til tyveri tæller: adgang fra script via XSS (blokeres af HttpOnly), aflytning på netværket (blokeres af Secure sammen med HSTS) og i stigende grad infostealer-malware, der kopierer browserens cookielager og genbruger sessionen et andet sted, helt uden om MFA. Browserproducenterne svarer igen med tiltag som Chromes app-bound kryptering af cookielageret og enhedsbundne sessionsloginoplysninger. Fordi cookies sendes med automatisk, muliggør de også CSRF, som SameSite mindsker, men ikke fjerner helt; sessions-id'et skal desuden fornyes ved login for at forhindre session fixation.

Juridisk kræver e-databeskyttelsesdirektivet 2002/58/EF art. 5, stk. 3, som ændret i 2009, samtykke, før oplysninger gemmes eller læses på brugerens udstyr, medmindre det er strengt nødvendigt for en tjeneste, brugeren har bedt om; i Danmark er det gennemført i cookiebekendtgørelsen. Samtykket skal opfylde databeskyttelsesforordningens krav, og EU-Domstolen fastslog i Planet49 (C-673/17, 2019), at forudafkrydsede felter ikke er gyldigt samtykke. Safari og Firefox blokerer eller partitionerer tredjepartscookies som standard, attributten Partitioned (CHIPS) giver indlejrede tjenester en cookiebeholder pr. site, og Google har opgivet planen om at udfase tredjepartscookies i Chrome.

Hvad du bør lære først

Alt det, dette bygger på - grundlaget først.

  1. Netværk
  2. →IP-adresse
  3. →Protokol
  4. →Klient
  5. →Pakke
  6. →Port
  7. →Router
  8. →Server
  9. →TCP/IP
  10. →HTTP
  11. →Internettet
  12. →Webbrowser
  13. →Cookie

Relationer

Forudsætter
HTTPWebbrowser
Bruges sammen med
SessionWebapplikation

Kilder og videre læsning

Standarder og officielle tekster

Officiel dokumentation

Hvor dataene kommer fra

Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.

Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON

Nævnt i

Test dig selv

Indlæser…

Atlas er i beta.