Kratak odgovor: SessionStorage i localStorage su API-ji za web pohranu temeljeni na pregledniku koji omogućuju web stranicama pohranu podataka na korisnikovom uređaju, ali se kritično razlikuju u postojanosti i opsegu. localStorage zadržava podatke neograničeno kroz sesije i kartice, dok sessionStorage briše podatke kada se kartica preglednika zatvori. S gledišta privatnosti, localStorage nosi znatno veći rizik jer podaci ostaju bez isteka, što ga čini privlačnijom metom za praćenje, fingerprinting i regulatorni nadzor prema okvirima poput GDPR-a.
Ključni zaključci
- localStorage traje neograničeno dok se eksplicitno ne obriše; sessionStorage se briše kada se kartica ili prozor zatvori.
- Obje vrste pohrane ranjive su na napade unakrsnog skriptiranja (XSS) i ne nude ugrađenu enkripciju.
- Podaci iz localStorage-a niti sessionStorage-a ne prenose se automatski na poslužitelj, za razliku od kolačića, ali su oba u potpunosti čitljiva bilo kojim JavaScriptom koji se izvodi na istom izvoru.
- Skripte trećih strana učitane na stranici mogu pristupiti podacima iz localStorage-a ako se izvode u istom kontekstu izvora.
- Prema GDPR-u, pohranjivanje nebitnih podataka u localStorage bez pristanka korisnika predstavlja kršenje usklađenosti, isto kao i postavljanje kolačića za praćenje.
- Osjetljivi podaci kao što su autentifikacijski tokeni, lozinke i osobni podaci (PII) nikada se ne bi smjeli pohranjivati u bilo kojem mehanizmu bez dodatnih sigurnosnih slojeva.
- Privatno/anonimno pregledavanje ograničava postojanost localStorage-a, ali ne eliminira rizike sessionStorage-a unutar sesije.
- Programeri bi trebali preferirati sessionStorage za privremeno stanje, sesije na strani poslužitelja ili HttpOnly kolačiće za autentifikaciju, te platformu za upravljanje pristankom kao što je Biscotti CMP za upravljanje pristankom za pohranu.
Koja je razlika između SessionStorage i LocalStorage?
SessionStorage i localStorage su oba dijela HTML5 Web Storage API-ja, ali služe različitim svrhama definiranim njihovom postojanošću i ponašanjem u opsegu kartica.
localStorage pohranjuje parove ključ-vrijednost bez datuma isteka. Podaci preživljavaju ponovno pokretanje preglednika, ponovno pokretanje sustava i neograničena razdoblja neaktivnosti dok ih korisnik ili aplikacija eksplicitno ne ukloni. Dijeli se na svim karticama i prozorima koji rade pod istim izvorom (protokol + domena + port). [1][5]
sessionStorage pohranjuje podatke samo za vrijeme trajanja sesije stranice. Kada korisnik zatvori karticu ili prozor, podaci nestaju. Kritično je da svaka kartica održava vlastiti izolirani sessionStorage, otvaranje iste URL adrese u drugoj kartici ne dijeli podatke sessionStorage-a prve kartice. [1]
| Značajka | localStorage | sessionStorage |
|---|---|---|
| Postojanost | Neograničeno | Samo za vrijeme trajanja kartice/prozora |
| Dijeljeno među karticama | Da (isti izvor) | Ne (izolacija po kartici) |
| Preživljava ponovno učitavanje stranice | Da | Da |
| Preživljava zatvaranje kartice | Da | Ne |
| Kapacitet pohrane | ~5-10 MB po izvoru | ~5-10 MB po izvoru |
| Prijenos na poslužitelj | Ne | Ne |
| HttpOnly zaštita | Nije dostupno | Nije dostupno |
Oba API-ja pridržavaju se politike istog izvora, tako da stranica na https://example.com ne može čitati pohranu postavljenu od strane https://otherdomain.com. [4]

Ima li localStorage rizike za privatnost u usporedbi sa sessionStorageom?
Da, localStorage nosi značajno veće rizike za privatnost od sessionStoragea, prvenstveno zbog svoje neograničene postojanosti i pristupačnosti među karticama.
Podaci zapisani u localStorage mogu se akumulirati mjesecima ili godinama bez korisnikove svijesti. Oglašivači i dobavljači analitike povijesno su koristili localStorage kao "super-kolačić", identifikator za praćenje koji preživljava brisanje kolačića jer većina korisnika ne razmišlja o ručnom brisanju pohrane preglednika. sessionStorage, nasuprot tome, samouništava se pri zatvaranju kartice, što ga čini daleko manje korisnim vektorom za praćenje.
Ključni faktori rizika za privatnost jedinstveni za localStorage:
- Trajni identifikatori za praćenje: Jedinstveni ID pohranjen u localStorage može pratiti korisnika kroz više posjeta bez ikakvog kolačića na strani poslužitelja.
- Curenje podataka među karticama: Bilo koja skripta koja se izvodi u bilo kojoj kartici istog izvora može čitati sve podatke iz localStorage-a.
- Emitiranje događaja pohrane: Promjene u localStorage-u pokreću
storagedogađaj u drugim otvorenim karticama iz istog izvora, omogućujući sinkronizaciju podataka među karticama koju korisnici ne mogu primijetiti. [5] - Nema automatskog isteka: Za razliku od kolačića, koji podržavaju atribute
Max-AgeiExpires, localStorage nema mehanizam TTL-a.
Mogu li web stranice pratiti korisnike koristeći localStorage i sessionStorage?
Web stranice mogu i koriste localStorage za trajno praćenje. sessionStorage je manje koristan za praćenje, ali i dalje predstavlja rizike nadzora unutar sesije.
Jedna JavaScript linija, localStorage.setItem('uid', 'abc123'), stvara trajni identifikator koji preživljava brisanje kolačića. Ova tehnika, ponekad nazvana "evercookie" ili ponovno stvaranje temeljeno na pohrani, dokumentirana je u istraživanju privatnosti i razlog je zašto regulatori sve više tretiraju localStorage pod istim pravilima pristanka kao i kolačiće.
sessionStorage može pratiti ponašanje unutar jedne sesije (tok stranice, unosi u obrasce, obrasci navigacije), ali ti podaci nestaju kada se kartica zatvori, ograničavajući njegovu korisnost za dugoročno profiliranje.
Koliko dugo podaci ostaju u SessionStorage vs. LocalStorage?
Podaci iz localStorage-a ostaju dok se eksplicitno ne obrišu, bilo da ih korisnik obriše iz pohrane preglednika, web stranica pozove localStorage.removeItem() ili localStorage.clear(), ili preglednik provede kvote pohrane. [2]
Podaci iz sessionStorage-a automatski se brišu kada se zatvori kartica ili prozor koji ih je stvorio. Preživljavaju ponovno učitavanje stranice unutar iste kartice, ali se ne prenose na nove kartice, čak i ako korisnik duplicira karticu u nekim preglednicima. [1]
Praktična implikacija: Ako programer pohrani token sesije u localStorage umjesto u sessionStorage, taj token ostaje na uređaju nakon što se korisnik odjavi, osim ako ga aplikacija eksplicitno ne ukloni. Ovo je česta i značajna pogreška.
Je li SessionStorage privatniji od localStoragea?
Za većinu slučajeva upotrebe privatnosti, da, sessionStorage je izbor koji više poštuje privatnost. Njegovo automatsko brisanje pri zatvaranju kartice znači da podaci ne ostaju, smanjujući izloženost zbog dijeljenja uređaja, ukradenih uređaja ili forenzičke analize.
Međutim, sessionStorage nije inherentno "privatan". Unutar aktivne sesije, jednako je ranjiv na XSS napade kao i localStorage. Bilo koja ubrizgana skripta može pozvati sessionStorage.getItem() i eksfiltrirati podatke u stvarnom vremenu. [3]
Odaberite sessionStorage ako: su podaci potrebni samo za trenutnu korisničku interakciju (npr. stanje obrasca u više koraka, jednokratni navigacijski tokeni).
Odaberite localStorage ako: podaci doista trebaju trajati kroz sesije (npr. korisničke UI postavke, neosjetljive postavke), i osigurajte da ne sadrže ništa osobno prepoznatljivo.
Koji osobni podaci nikada ne bi smjeli ići u localStorage?
Sljedeće kategorije podataka nikada se ne bi smjele pohranjivati u localStorage (i s njima se treba postupati s iznimnim oprezom čak i u sessionStorageu): [3]
- Autentifikacijski tokeni (JWT-ovi, OAuth tokeni, ID-ovi sesija)
- Lozinke ili hash-evi lozinki
- Podaci o kreditnim karticama ili plaćanju
- Brojevi osobnih iskaznica ili brojevi socijalnog osiguranja
- Puna imena u kombinaciji s e-mail adresama ili telefonskim brojevima
- Medicinski ili zdravstveni kartoni
- Bilo koji podaci klasificirani kao "posebna kategorija" prema GDPR-u (biometrijski podaci, zdravstveni podaci, politička mišljenja)
Podaci pohranjeni u localStorage-u i sessionStorage-u su po zadanim postavkama nešifrirani. Svatko s fizičkim pristupom uređaju, ili bilo koja skripta sposobna za izvršavanje na stranici, može ih čitati u običnom tekstu. [3]
Mogu li skripte trećih strana pristupiti podacima iz localStorage-a?
Skripte trećih strana mogu pristupiti podacima iz localStorage-a ako su učitane i izvršene unutar istog izvora kao i host stranica. Ovo je kritičan i često podcijenjen rizik.
Kada web stranica ugradi analitičku ili oglašivačku skriptu treće strane putem <script> oznake, ta se skripta izvodi u kontekstu izvora host stranice. Može slobodno čitati i pisati u localStorage stranice. Politika istog izvora ne štiti od skripti koje su namjerno ili nenamjerno uključene na stranicu. [4]
Što to znači u praksi: Ako stranica pohranjuje korisnički identifikator u localStorage i također učitava oglasnu skriptu treće strane, ta oglasna skripta može pročitati identifikator i povezati ga s podacima o ponašanju na više stranica, bez znanja ili pristanka korisnika.
To je jedan od razloga zašto su platforme za upravljanje pristankom važne. Biscotti CMP omogućuje web stranicama upravljanje i dokumentiranje korisničkog pristanka za operacije pohrane, uključujući praćenje temeljeno na localStorage-u, pomažući stranicama da ispune svoje obveze prema GDPR-u i sličnim okvirima.
Koje su GDPR implikacije korištenja localStorage-a?
Prema GDPR-u, svaka pohrana osobnih podataka ili identifikatora za praćenje, bez obzira na tehnički mehanizam, zahtijeva pravnu osnovu. Za nebitno praćenje putem localStorage-a, ta je osnova gotovo uvijek eksplicitan pristanak korisnika. [2]
Europski odbor za zaštitu podataka potvrdio je da localStorage korišten za analitiku, oglašavanje ili profiliranje korisnika potpada pod iste zahtjeve za pristanak kao i kolačići. Web stranice koje postavljaju identifikatore za praćenje u localStorage bez prethodnog pristanka suočavaju se s istom izloženošću provedbi kao i one koje koriste kolačiće bez pristanka.
Popis za provjeru usklađenosti za localStorage prema GDPR-u:
- Provjerite sve ključeve localStorage-a koje su napisale skripte prve i treće strane.
- Klasificirajte svaki ključ: je li strogo nužan za uslugu ili se koristi za analitiku/oglašavanje?
- Za nebitnu pohranu, uvjetujte operaciju pisanja dokumentiranim pristankom korisnika.
- Omogućite korisnicima jasan mehanizam za povlačenje pristanka i pokretanje brisanja pohrane.
- Dokumentirajte legitimni interes voditelja obrade podataka ili zapis o pristanku.
Pravilno konfigurirana platforma za upravljanje pristankom kao što je Biscotti CMP može automatizirati veći dio ovog životnog ciklusa pristanka.
Može li se localStorage pristupiti s različitih web stranica?
Ne. localStorage je strogo ograničen na izvor (kombinacija protokola + domene + porta) koji ga je stvorio. Skripta na https://siteA.com ne može čitati podatke iz localStorage-a postavljene od strane https://siteB.com. [4]
Međutim, ova zaštita ima ograničenja. Ako jedan pružatelj oglašavanja ili analitike učitava svoje skripte na siteA.com i siteB.com, svaka instanca neovisno piše u localStorage te stranice. Pružatelj zatim korelira podatke na strani poslužitelja, učinkovito postižući praćenje na više stranica bez kršenja politike istog izvora.
Kako inkognito način i privatno pregledavanje utječu na localStorage?
Privatno/inkognito pregledavanje stvara privremenu particiju za pohranu koja se briše kada se privatni prozor zatvori. localStorage zapisan tijekom inkognito sesije ne traje u glavnom profilu preglednika i nije dostupan običnim prozorima za pregledavanje.
sessionStorage se ponaša isto u inkognito načinu kao i u običnom pregledavanju: briše se kada se kartica zatvori.
Važne napomene:
- Unutar aktivne inkognito sesije, localStorage je i dalje čitljiv svim skriptama koje se izvode u kontekstu istog izvora te sesije.
- Inkognito način ne sprječava eksfiltraciju podataka u stvarnom vremenu temeljenu na XSS-u.
- Neki preglednici sinkroniziraju localStorage na svim uređajima ako je korisnik prijavljen u sinkronizaciju preglednika, ponašanje koje može premjestiti "lokalne" podatke u infrastrukturu oblaka.
Kako mogu obrisati SessionStorage i LocalStorage radi privatnosti?
Brisanje pohrane preglednika je jednostavno, ali zahtijeva namjerno djelovanje jer preglednici to ne čine automatski za localStorage.
Brisanje na razini preglednika:
- Chrome: Postavke > Privatnost i sigurnost > Obriši podatke pregledavanja > Spremljene slike i datoteke + Podaci web mjesta
- Firefox: Postavke > Privatnost i sigurnost > Kolačići i podaci web mjesta > Obriši podatke
- Safari: Postavke > Privatnost > Upravljanje podacima web mjesta
Programsko brisanje (za programere):
localStorage.clear()uklanja sve ključeve za izvor.sessionStorage.clear()uklanja sve ključeve za trenutnu sesiju kartice.localStorage.removeItem('keyName')uklanja određeni ključ.
Za krajnje korisnike zabrinute zbog praćenja: brisanje "podataka web mjesta" ili "kolačića i pohrane" u postavkama preglednika uklanja sadržaj localStorage-a i sessionStorage-a za sve web stranice. Proširenja preglednika dizajnirana za privatnost mogu to automatizirati na temelju web mjesta ili sesije.
Koje su uobičajene pogreške programera u vezi s privatnošću pri korištenju web pohrane?
Najznačajnije pogreške imaju zajednički korijen: tretiranje klijentske pohrane kao da je sigurna baza podataka na strani poslužitelja.
- Pohranjivanje JWT-ova u localStorage: Autentifikacijski tokeni pohranjeni u localStorage-u dostupni su bilo kojoj skripti na stranici. Jedna XSS ranjivost izlaže token svakog korisnika. Umjesto toga koristite HttpOnly kolačiće za autentifikacijske tokene.
- Nema logike isteka: localStorage nema TTL. Programeri koji pohranjuju podatke bez izgradnje logike isteka ostavljaju zastarjele, osjetljive podatke na uređajima neograničeno.
- Pretpostavka da isti izvor znači sigurno: Politika istog izvora blokira vanjske stranice, a ne zlonamjerne skripte učitane unutar iste stranice (XSS, kompromitirane biblioteke trećih strana).
- Ignoriranje pristupa skripti trećih strana: Ugrađivanje analitičkih ili oglasnih skripti bez provjere što čitaju iz localStorage-a.
- Nema pristanka za pohranu za praćenje: Pisanje analitičkih identifikatora u localStorage prije dobivanja korisničkog pristanka, izravno kršenje GDPR-a. [2]
- Pohranjivanje suvišnih PII: Keširanje API odgovora koji uključuju pune korisničke profile u localStorage "radi performansi" bez razmatranja površine izloženosti.
Je li IndexedDB privatniji od localStorage-a?
IndexedDB nije inherentno privatniji od localStorage-a. Oba su regulirana politikom istog izvora, oba su dostupna JavaScriptu koji se izvodi na stranici i oba su ranjiva na XSS napade.
IndexedDB nudi veći kapacitet pohrane i podržava strukturirane podatke i binarne blobove, što ga čini prikladnim za složene izvanmrežne aplikacije. Ali s gledišta privatnosti i sigurnosti, rizici su usporedivi. Podaci pohranjeni u IndexedDB također su po zadanim postavkama nešifrirani i traju neograničeno dok se eksplicitno ne obrišu.
Izbor između IndexedDB-a i localStorage-a trebao bi biti vođen složenošću podataka i zahtjevima za volumenom, a ne pretpostavkama o privatnosti. Ni jedno ni drugo nije prikladno za osjetljive osobne podatke bez enkripcije na razini aplikacije i strogih kontrola pristupa.
Zaključak
Rasprava o SessionStorage vs. LocalStorage: Implikacije na privatnost API-ja za web pohranu nije samo tehnička fusnota, već ima izravne posljedice za privatnost korisnika, usklađenost s propisima i sigurnost aplikacija. Neograničena postojanost localStorage-a i pristupačnost među karticama čine ga mehanizmom pohrane visokog rizika kada se zloupotrijebi, dok automatsko brisanje sessionStorage-a pri zatvaranju kartice čini ga obranjivijim izborom za privremeno stanje.
Akcijski koraci za programere i vlasnike web stranica u 2026.:
- Provjerite svu upotrebu localStorage-a i sessionStorage-a u skriptama prve i treće strane pomoću DevTools-a preglednika (kartica Aplikacija).
- Odmah uklonite sve autentifikacijske tokene, PII ili osjetljive identifikatore iz klijentske pohrane.
- Zamijenite pohranu autentifikacijskih tokena temeljenu na localStorage-u s HttpOnly, Secure kolačićima kojima se upravlja na strani poslužitelja.
- Implementirajte tijek rada za upravljanje pristankom, koristeći platformu kao što je Biscotti CMP, kako biste nebitne zapise u localStorage-u uvjetovali dokumentiranim pristankom korisnika.
- Ugradite logiku isteka u sve podatke iz localStorage-a koji moraju trajati i provedite čišćenje pri odjavi.
- Provedite reviziju skripti trećih strana kako biste razumjeli što vanjski kod može čitati iz pohrane vašeg izvora.
- Obučite razvojne timove o prevenciji XSS-a kao primarnom vektoru napada na obje vrste pohrane.
API-ji za web pohranu su moćni alati. Korišteni bez discipline privatnosti, postaju vektori odgovornosti. Korišteni s namjernim opsegom, upravljanjem pristankom i sigurnosnom higijenom, služe svojoj namjeni bez ugrožavanja korisnika koji vjeruju vašoj aplikaciji.
Često postavljana pitanja
P: Koja je glavna razlika između sessionStorage i localStorage? localStorage trajno pohranjuje podatke kroz sesije i dijeli se na svim karticama istog izvora. sessionStorage pohranjuje podatke samo za vrijeme trajanja trenutne kartice i automatski se briše kada se kartica zatvori.
P: Može li se localStorage koristiti za praćenje korisnika bez kolačića? Da. Jedinstveni identifikator pohranjen u localStorage-u preživljava brisanje kolačića i može se koristiti za praćenje korisnika kroz više posjeta istoj web stranici, funkcionirajući kao trajni mehanizam praćenja.
P: Je li sessionStorage siguran za pohranu lozinki? Ne. sessionStorage nije šifriran i dostupan je bilo kojem JavaScriptu koji se izvodi na stranici, uključujući ubrizgane zlonamjerne skripte. Lozinke se nikada ne bi smjele pohranjivati u bilo koji mehanizam klijentske pohrane.
P: Primjenjuje li se GDPR na localStorage? Da. Prema GDPR-u, pohranjivanje identifikatora za praćenje ili osobnih podataka u localStorage bez pravne osnove, obično eksplicitnog pristanka korisnika za nebitne svrhe, predstavlja kršenje usklađenosti jednako korištenju kolačića bez pristanka.
P: Mogu li skripte trećih strana čitati moje podatke iz localStorage-a?
Da, ako su te skripte učitane i izvršene unutar istog izvora. Analitičke ili oglašivačke skripte trećih strana ugrađene putem <script> oznaka izvode se u kontekstu izvora host stranice i mogu čitati sve podatke iz localStorage-a za taj izvor.
P: Briše li brisanje kolačića i localStorage? Ne uvijek. U većini preglednika, samo brisanje "kolačića" ne briše localStorage. Korisnici moraju posebno obrisati "podatke web mjesta" ili "kolačiće i druge podatke web mjesta" kako bi uklonili sadržaj localStorage-a.
P: Je li inkognito način siguran od praćenja putem localStorage-a? Inkognito način sprječava trajanje podataka iz localStorage-a nakon zatvaranja privatnog prozora, ali unutar aktivne inkognito sesije, localStorage je i dalje čitljiv svim skriptama na stranici.
P: Što bih trebao koristiti umjesto localStorage-a za autentifikacijske tokene? Koristite HttpOnly, Secure, SameSite kolačiće kojima se upravlja na strani poslužitelja. Ti kolačići su nedostupni JavaScriptu, eliminirajući rizik krađe tokena temeljen na XSS-u koji nosi localStorage.
P: Je li IndexedDB sigurniji od localStorage-a? Ne. IndexedDB podliježe istim XSS ranjivostima i politici istog izvora kao i localStorage. Nudi veći kapacitet i podršku za strukturu podataka, ali nema dodatnih jamstava privatnosti ili sigurnosti.
P: Koliko podataka mogu pohraniti localStorage i sessionStorage? Većina modernih preglednika dodjeljuje približno 5 do 10 MB pohrane po izvoru za svaku vrstu pohrane, znatno više od ograničenja od 4 KB tipičnog za kolačiće. [2]
Reference
[1] Sessionstorage - https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage?utm_source=openai
[2] What Is Localstorage Sessionstorage - https://inspectwp.com/en/knowledge-base/what-is-localstorage-sessionstorage?utm_source=openai
[3] Html5 Web Storage Security Risks Safeguarding Localstorage And Sessionstorage - https://www.dopethemes.com/html5-web-storage-security-risks-safeguarding-localstorage-and-sessionstorage/?utm_source=openai
[4] Localstorage - https://javascript.info/localstorage?utm_source=openai
[5] Localstorage Sessionstorage - https://www.w3docs.com/learn-javascript/localstorage-sessionstorage?utm_source=openai
[6] Cookies Vs Localstorage Vs Sessionstorage What Each One Exactly Means - https://www.interserver.net/tips/kb/cookies-vs-localstorage-vs-sessionstorage-what-each-one-exactly-means/?utm_source=openai