Perusteet haltuun

Evästeet

Helppo
45 min


HTTP-eväste (engl. cookie) on tieto, jonka verkkosivu tallentaa selaimeen. Selaimen tehdessä kyselyjä tulevaisuudessa, selain lähettää tallennetut evästeet pyyntöjen mukana HTTP-otsakkeissa. Evästeiden avulla verkkosivu voi ylläpitää tietoa esimerkiksi käyttäjän valinnoista, asetuksista sekä paljon muuta. Verkkosivu tallentaa evästeen selaimeen käyttämällä Set-Cookie-otsaketta.

Yksi evästeiden merkittävimmistä käyttötarkoituksista on ylläpitää istuntotilaa siten, että verkkosivu pystyy identifioimaan sekä verifioimaan, että kuka käyttäjä on ja onko tämä yhä kirjautunut. Tämä tapahtuu siten, että kun käyttäjä kirjautuu palveluun, verkkosivu tallentaa selaimeen istuntoevästeen, jonka avulla verkkosivu pystyy tulkitsemaan tulevaisuudessa pyynnön tilan suhteessa istuntoon.

Alla olevassa kuvassa näytetään kuinka selain ja sovellus suorittavat oman osuutensa kirjautumisprosessissa. Ensin selain lähettää sovellukselle käyttäjätunnuksen ja salasanan. Jos tunnukset ovat oikein, sovellus palauttaa istuntotunnisteen Set-Cookie-otsakkeessa, jonka selain tallentaa. Tämän jälkeen, selain sisällyttää tunnisteen jokaiseen HTTP-pyyntöön, jonka lähettää kyseiselle verkkosivulle.


Evästeiden direktiivit

Evästeihin on aina liitetty parametreja tai "lisäohjeita", minkä avulla selain ymmärtää miten kyseistä evästettä saa käyttää. Näitä kutsutaan direktiiveiksi ja nämä voidaan määrittää verkkosivun puolesta, evästeen tallennuksen yhteydessä. Jos näitä ei määrittele, selain käyttää siihen ohjelmoituja oletusarvoja. Alla listattuna muutamia direktiivejä.

  • Expires: Expires-direktiivi on vaihtoehtoinen ja määrittää kuinka pitkään eväste on käytössä. Jos tätä ei määritetä, pysyy eväste käytössä kunnes toisin määritetään.
  • Max-Age: Max-Age-direktiivin avulla evästeelle voi määrittää kuinka pitkään tämä on käytössä käyttäen sekunteja. Tämäkin on vaihtoehtoinen.
  • Domain: Domain-direktiivin avulla voidaan määrittää minkä niminen evästeen omistama verkkosivu on. Tätä ei kuitenkaan voida määrittää toisille verkkosivuille kuin omalle, koska se olisi tietoturvaongelma. Jos tämä määritetään, lähetetään evästeet myös verkkosivun kaikille ali-domaineille. Esimerkiksi hakatemia.fi verkkosivun ali-domain voisi olla testi.hakatemia.fi.
  • Path: Path-direktiivillä voidaan antaa tarkempi polku, jolloin eväste kuuluu sisällyttää. Esimerkiksi, jos Path-arvo olisi /x, niin tällöin eväste lähetettäisiin ainoastaan, kun selain kommunikoi /x-polkuun.
  • Secure: Secure-direktiivi on tietoturvadirektiivi, jonka avulla voidaan estää evästeen lähettäminen suojaamattoman HTTP-protokollan yli. Jos direktiivi on asetettu, niin selain lähettää evästeen ainoastaan suojatun HTTPS-protokollan yli.
  • SameSite: SameSite-direktiivi on tietoturvadirektiivi, jolla voidaan estää evästeiden lähettäminen, kun HTTP-pyynnön alkuperä ei ole sama kuin pyynnön vastaanottaja. Tällä estetään esimerkiksi CSRF (Cross-Site Request Forgery) -hyökkäykset, jossa haitalliset sivut yrittävät tehdä muutoksia muihin palveluihin, joihin käyttäjällä on aktiivinen istunto. Tämä on oletusarvoisesti asetettu Lax-moodiin. SameSite-voidaan asettaa kolmeen eri tilaan, eli None, Lax ja Strict. None on sama kuin että tämä ei olisi käytössä, Lax estää kaiken paitsi esimerkiksi linkillä navigoinnin. Secure estää myös linkit ja voi usein rikkoa verkkosivun käytettävyyden.

HTTP-evästeet

Käynnistä tehtävä ja lähetä verkkosivulle HTTP-pyyntö, jossa evästeet ovat:

  • hakatemia-keksi: h4k4temi4

Tehtävät

Flag

Löydä lippu (flag) labraympäristöstä ja syötä se alle.

hakatemia pro

Valmis ryhtymään eettiseksi hakkeriksi?
Aloita jo tänään.

Hakatemian jäsenenä saat rajoittamattoman pääsyn Hakatemian moduuleihin, harjoituksiin ja työkaluihin, sekä pääset discord-kanavalle jossa voit pyytää apua sekä ohjaajilta että muilta Hakatemian jäseniltä.