Većina korisnika smatra da je JavaScript samo tehnologija koja omogućava animacije, dugmad i interaktivne web stranice. Svaki put kada otvorimo neku stranicu, JavaScript pomaže da se sadržaj dinamički učita, obrasci rade ispravno, a aplikacije funkcionišu gotovo kao klasični programi.
Međutim, upravo zbog tih mogućnosti JavaScript je postao i jedna od najvažnijih tema moderne informacijske sigurnosti. Ne zato što sam po sebi predstavlja prijetnju, već zato što se izvršava unutar preglednika kojem svakodnevno povjeravamo svoje podatke.
JavaScript nije problem sam po sebi
JavaScript pokreće gotovo svaki moderni web servis.
Internet bankarstvo.
Online trgovine.
Društvene mreže.
E-mail servisi.
Poslovne aplikacije.
Bez njega većina interneta kakvog danas poznajemo jednostavno ne bi radila.
Problem nastaje kada se JavaScript izvršava na mjestu gdje ne bi smio ili kada napadač uspije ubaciti vlastiti kod u web stranicu kojoj korisnik vjeruje.
Može li jedna web stranica čitati podatke druge?
U normalnim okolnostima odgovor je – ne.
Moderni preglednici koriste sigurnosno pravilo koje sprječava da JavaScript sa jedne domene čita sadržaj druge domene.
Na primjer, ako otvorite svoju internet banku i u drugoj kartici portal s vijestima, skripta sa portala ne može jednostavno pristupiti podacima iz bankarske stranice.
To je jedna od osnovnih sigurnosnih zaštita modernog interneta.
Gdje onda nastaje stvarna opasnost?
Prava prijetnja pojavljuje se kada se zlonamjerni JavaScript izvršava unutar iste web stranice kojoj korisnik vjeruje.
To se može dogoditi zbog sigurnosnog propusta na stranici, kompromitovane skripte treće strane ili drugog oblika kompromitacije.
U tom slučaju skripta može imati pristup podacima kojima inače raspolaže i sama aplikacija.
Koje informacije mogu biti izložene?
Ako web aplikacija nije pravilno dizajnirana ili je kompromitovana, zlonamjerni JavaScript može doći do različitih podataka kojima stranica već raspolaže.
| Vrsta podatka | Zašto je važna |
|---|---|
| Podaci koje korisnik unosi u obrasce | Mogu sadržavati lične ili poslovne informacije. |
| Podaci spremljeni u localStorage ili sessionStorage | Mogu sadržavati postavke ili tokene ako ih aplikacija neadekvatno pohranjuje. |
| Informacije prikazane na stranici | Skripta može pristupiti sadržaju koji korisnik vidi unutar iste stranice. |
| API tokeni ili drugi sigurnosni identifikatori | Ako su dostupni JavaScriptu, njihova zaštita zavisi od načina implementacije aplikacije. |
Važno je naglasiti da mogućnost pristupa ovim podacima ne znači da će svaka stranica to moći učiniti. Zavisi od načina na koji je određena web aplikacija razvijena i zaštićena.
Primjer iz svakodnevnog života
Zamislite da koristite poslovnu web aplikaciju.
Prijavili ste se i radite svoj posao.
Sve funkcioniše normalno.
Ako aplikacija sadrži ozbiljan sigurnosni propust koji omogućava izvršavanje neovlaštenog JavaScripta, taj kod može pristupiti informacijama kojima raspolaže sama aplikacija tokom vaše sesije.
Korisnik najčešće neće primijetiti nikakvu razliku.
Stranica izgleda potpuno isto.
Nema iskačućih prozora.
Nema upozorenja.
Sve djeluje uobičajeno.
Zašto je način pohrane podataka važan?
Savremene web aplikacije često koriste različite mehanizme za pohranu podataka.
Neki podaci postoje samo tokom aktivne sesije.
Drugi se čuvaju lokalno kako bi aplikacija bila brža.
Treći se nalaze isključivo na serveru.
Što je manje osjetljivih informacija dostupno JavaScriptu u pregledniku, to je manja potencijalna šteta u slučaju sigurnosnog incidenta.
Zbog toga se sigurnosni stručnjaci godinama zalažu za pažljivo upravljanje autentikacijskim podacima, korištenje odgovarajućih zaštitnih mehanizama i izbjegavanje nepotrebnog spremanja osjetljivih informacija u lokalnu memoriju preglednika.
Šta korisnici mogu učiniti?
Iako većinu sigurnosnih mjera moraju implementirati programeri i administratori sistema, korisnici također mogu smanjiti rizik.
- Redovno ažurirajte preglednik.
- Koristite provjerene web stranice.
- Budite oprezni s ekstenzijama koje instalirate u preglednik.
- Ne prijavljujte se na osjetljive servise putem sumnjivih linkova.
- Ako primijetite neuobičajeno ponašanje stranice, prekinite sesiju i ponovo se prijavite tek kada budete sigurni da je sve u redu.
Sigurnost je zajednička odgovornost
JavaScript nije neprijatelj interneta. Naprotiv, bez njega bi većina modernih web aplikacija bila znatno ograničena.
Međutim, kada se sigurnosni propusti potkradu u razvoj aplikacije ili kada kompromitovani kod postane dio stranice kojoj vjerujemo, posljedice mogu biti ozbiljne. Upravo zato kvalitetna zaštita web aplikacija ne podrazumijeva samo antivirus ili jaku lozinku, već i siguran razvoj, redovno testiranje te odgovorno upravljanje podacima.
Za korisnike je najvažnije razumjeti jednu jednostavnu činjenicu: sigurnost na internetu ne zavisi samo od toga šta kliknemo, već i od toga koliko su sigurne web stranice kojima svakodnevno povjeravamo svoje podatke.