📧 [email protected] 📞 +381 61 161 2299
OWASP A03: Injection

XSS napadi: Kako napadači izvršavaju kod u vašem browseru

2026-07-14 · Shieldome Scout

Cross-Site Scripting (XSS) je jedna od najrasprostranjenijih web ranjivosti. Ubacivanjem JavaScript koda napadač može ukrasti sesije, preusmeriti korisnike i izvesti napade koji izgledaju kao da dolaze sa vašeg sajta.

← Blog

Šta je XSS?

Cross-Site Scripting (XSS) je napad u kome napadač ubacuje maliciozni JavaScript kod u web stranicu koju drugi korisnici posećuju. Browser žrtve izvršava taj kod u kontekstu pouzdanog sajta — što znači da kod ima pristup kolačićima, session tokenima, sadržaju stranice i može slati zahteve u ime korisnika.

XSS je posebno opasan jer radi na strani klijenta: server može biti potpuno siguran, a napad se i dalje dešava u browseru korisnika.

Tri tipa XSS napada

1. Reflected XSS

Maliciozni kod se prosleđuje kroz URL parametar, server ga uključuje u odgovor bez sanitizacije, i browser ga izvršava. Napad se "odbija" od servera ka korisniku.

Primer: https://sajt.rs/pretraga?q=<script>alert(1)</script>

Ako server prikaže vrednost parametra q direktno na stranici, script se izvršava. Napadač širi link žrtvama putem phishing emailova.

2. Stored XSS

Najopasniji tip: maliciozni kod se čuva u bazi podataka (komentar, profil, poruka) i prikazuje se svim korisnicima koji posete tu stranicu — bez ikakve akcije napadača nakon inicijalnog unosa.

Stored XSS napad na WordPress komentar može kompromitovati sesije svih administratora koji pregledaju komentare. Jedan napadač, hiljade žrtava.

3. DOM-based XSS

Napad se dešava isključivo na strani klijenta: JavaScript kod na stranici uzima podatke iz URL-a ili drugog izvora i dinamički upisuje ih u DOM bez sanitizacije, bez ikakvog zahteva ka serveru. Teško ga je detektovati statičkim skeniranjem.

// Ranjivi kod:
document.getElementById('output').innerHTML = location.hash.slice(1);
// URL: https://sajt.rs/page#<img src=x onerror=alert(1)>

Šta napadač može da uradi

Odbrana od XSS-a

Output encoding

Svaki korisnički unos koji se prikazuje u HTML-u mora biti enkodiran. < postaje &lt;, > postaje &gt;. Moderni templating engine-i (Jinja2, Twig, Handlebars) ovo rade automatski — ali pazi na | safe ili innerHTML operacije.

Content Security Policy (CSP)

CSP zaglavlje govori browseru koji JavaScript sme da izvrši. Sa strogim CSP-om koji zabranjuje inline skripte, većina XSS napada je neutralisana čak i ako je ranjivost prisutna.

Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-{random}'

HttpOnly i Secure kolačići

HttpOnly atribut sprečava JavaScript da čita session cookie — čak i pri uspešnom XSS napadu, napadač ne može ukrasti session token.

Validacija unosa

Odbijte unos koji ne odgovara očekivanom formatu. Za HTML sadržaj koji mora biti dozvoljen (rich text editor), koristite proverene sanitizacione biblioteke poput DOMPurify.

Redovni assessment

Shieldome Scout testira reflektovani XSS šaljući benigne probe markere i analizirajući da li se pojavljuju u HTML odgovoru bez enkodiranja — sve bez aktivnih exploit payloada.

Proverite bezbednost vašeg sajta

Profesionalna procena ranjivosti. OWASP Top 10, dark web monitoring, PDF izveštaj za 2–3 radna dana.

Zatražite procenu →