Kolačići iste stranice su važan sigurnosni mehanizam koji se može koristiti za ublažavanje napada krivotvorenja zahtjeva na više lokacija (CSRF) u web aplikacijama. CSRF napadi se javljaju kada napadač prevari žrtvu da izvrši nenamjernu radnju na web stranici na kojoj je žrtva autentificirana. Iskorišćavanjem sesije žrtve napadač može izvršiti radnje u ime žrtve bez njenog pristanka.
Kolačići iste stranice pomažu u sprječavanju CSRF napada ograničavanjem opsega kolačića na isto porijeklo. Porijeklo je definirano kombinacijom protokola (npr. HTTP ili HTTPS), domene i broja porta. Kada je kolačić postavljen sa atributom "SameSite", on određuje da li kolačić treba biti poslan u zahtjevima za više lokacija.
Postoje tri moguće vrijednosti za atribut "SameSite":
1. "Strogo": Kada je atribut "SameSite" postavljen na "Strogo", kolačić se šalje samo u zahtjevima koji potiču sa iste stranice. To znači da se kolačić neće slati u zahtjevima na više lokacija, čime se efektivno sprječavaju CSRF napadi. Na primjer, ako je korisnik autentificiran na "example.com" i posjeti zlonamjernu stranicu koja pokušava izvršiti CSRF napad, pretraživač neće uključiti "Strogi" kolačić iste stranice u zahtjev, čime će spriječiti napad.
2. "Lax": Kada je atribut "SameSite" postavljen na "Lax", kolačić se šalje u zahtjevima na više lokacija koji se smatraju sigurnim, kao što je kada je zahtjev pokrenut navigacijom najvišeg nivoa od strane korisnika. Međutim, kolačić se ne šalje u zahtjevima koje pokreću web stranice trećih strana, kao što je kada se oznaka slike ili skripte učita s druge domene. Ovo obezbeđuje ravnotežu između sigurnosti i upotrebljivosti. Na primjer, korisnik koji posjeti zlonamjernu stranicu putem veze neće pokrenuti CSRF napad jer kolačić iste stranice "Lax" neće biti uključen u zahtjev.
3. "None": Kada je atribut "SameSite" postavljen na "None", kolačić se šalje u svim zahtjevima za više lokacija, bez obzira na njihovo porijeklo. Međutim, kako bi se osigurala sigurnost korištenja "Ništa", kolačić također mora biti označen kao "Bezbedan", što znači da će se slati samo preko HTTPS veza. Ova kombinacija omogućava web aplikacijama da podrže funkcionalnost na različitim lokacijama, a istovremeno štite od CSRF napada. Treba napomenuti da vrijednost "None" treba koristiti samo kada je to neophodno, jer povećava površinu napada i potencijal za CSRF ranjivosti.
Da biste ilustrirali upotrebu kolačića iste stranice u ublažavanju CSRF napada, razmotrite sljedeći scenario: bankarska web stranica koja korisnicima omogućava prijenos sredstava. Bez kolačića iste stranice, napadač bi mogao stvoriti zlonamjernu web stranicu koja uključuje skriveni obrazac koji automatski šalje zahtjev za prijenos sredstava na bankarsku web stranicu kada je posjeti autentificirani korisnik. Ako korisnikov pretraživač uključi sesijski kolačić u zahtjev, prijenos će biti izvršen bez pristanka korisnika. Međutim, postavljanjem kolačića sesije kao kolačića iste lokacije sa atributom "Strogi", pretraživač neće uključiti kolačić u zahtev za više lokacija, čime se efektivno sprečava CSRF napad.
Kolačići iste stranice su vrijedan sigurnosni mehanizam za ublažavanje CSRF napada u web aplikacijama. Ograničavajući opseg kolačića na isto porijeklo, ovi kolačići sprječavaju napadače da iskoriste sesiju korisnika za obavljanje neovlaštenih radnji. Vrijednost "Strict" osigurava da se kolačići šalju samo u zahtjevima koji potiču sa iste stranice, dok vrijednost "Lax" omogućava slanje kolačića u sigurnim zahtjevima na više lokacija. Vrijednost "None", u kombinaciji sa atributom "Secure", omogućava funkcionalnost na više lokacija, a istovremeno štiti od CSRF napada.
Ostala nedavna pitanja i odgovori u vezi Osnove sigurnosti web aplikacija EITC/IS/WASF:
- Da li implementacija Do Not Track (DNT) u web pretraživačima štiti od otiska prsta?
- Da li HTTP Strict Transport Security (HSTS) pomaže u zaštiti od napada na niže verzije protokola?
- Kako funkcioniše napad ponovnog povezivanja DNS-a?
- Da li se pohranjeni XSS napadi događaju kada je zlonamjerna skripta uključena u zahtjev web aplikaciji i potom poslana nazad korisniku?
- Da li se SSL/TLS protokol koristi za uspostavljanje šifrirane veze u HTTPS-u?
- Šta su zaglavlja zahtjeva za dohvaćanje metapodataka i kako se mogu koristiti za razlikovanje između zahtjeva istog porijekla i zahtjeva na više lokacija?
- Kako pouzdani tipovi smanjuju površinu napada web aplikacija i pojednostavljuju sigurnosne preglede?
- Koja je svrha zadane politike u pouzdanim tipovima i kako se može koristiti za identifikaciju nesigurnih dodjela nizova?
- Koji je proces za kreiranje objekta pouzdanih tipova pomoću API-ja pouzdanih tipova?
- Kako direktiva pouzdanih tipova u politici sigurnosti sadržaja pomaže u ublažavanju ranjivosti DOM-baziranog skriptiranja na više lokacija (XSS)?
Pogledajte više pitanja i odgovora u EITC/IS/WASF Osnovama sigurnosti web aplikacija

