Sigurno Kodiranje i OWASP Top 10 — Kompletni Vodič 2026

Sigurno Kodiranje i OWASP Top 10 — Kompletni Vodič 2026
Skoro polovina svih web aplikacija sadrži najmanje jednu OWASP ranjivost. Globalni prosječni trošak jednog sigurnosnog incidenta iznosi 4,44 miliona USD u 2025. godini.
Sigurnost web aplikacija više nije opcija — ona je fundamentalni zahtjev svakog modernog razvojnog projekta. Prema istraživanju Veracode State of Software Security 2025, skeniranje više od milion aplikacija pokazalo je da skoro polovina njih sadrži najmanje jednu sigurnosnu ranjivost iz OWASP Top 10 liste. Istovremeno, prema IBM Cost of a Data Breach Report 2025, globalni prosječni trošak jednog sigurnosnog incidenta iznosi 4,44 miliona USD — što jasno govori o cijeni zanemarivanja sigurnog kodiranja.
OWASP (Open Web Application Security Project) je međunarodna neprofitna organizacija koja od 2003. godine objavljuje listu deset najkritičnijih sigurnosnih rizika za web aplikacije. Najnovija verzija — OWASP Top 10:2025 — donosi značajne izmjene koje odražavaju evoluciju prijetnji u modernom softverskom ekosistemu. U ovom vodiču prolazimo kroz svaku kategoriju, objašnjavamo najopasnija tri napada (SQL injection, XSS i CSRF) te dajemo konkretne savjete za implementaciju sigurnog koda.
OWASP Top 10:2025 — Šta se promijenilo?
Osmo izdanje OWASP Top 10 liste, potvrđeno u januaru 2026. godine, zasnovano je na analizi više od 175.000 CVE zapisa i povratnim informacijama sigurnosnih stručnjaka širom svijeta. Lista uvodi dvije potpuno nove kategorije i jednu konsolidaciju, što je označeno kao fundamentalni pomak u pristupu sigurnosti aplikacija.
| Rang 2025 | Kategorija | Promjena vs 2021 | Broj CWE |
|---|---|---|---|
| A01 | Broken Access Control | = Ostaje #1 | 40 CWE |
| A02 | Security Misconfiguration | ↑ Sa #5 na #2 | 16 CWE |
| A03 | Software Supply Chain Failures | ★ NOVO 2025 | 6 CWE |
| A04 | Cryptographic Failures | ↓ Sa #2 na #4 | 32 CWE |
| A05 | Injection (SQL, XSS, LDAP...) | ↓ Sa #3 na #5 | 37 CWE |
| A06 | Insecure Design | ↓ Sa #4 na #6 | 39 CWE |
| A07 | Authentication Failures | = Ostaje #7 | 36 CWE |
| A08 | Software or Data Integrity Failures | = Ostaje #8 | 14 CWE |
| A09 | Security Logging & Alerting Failures | = Ostaje #9 | 5 CWE |
| A10 | Mishandling of Exceptional Conditions | ★ NOVO 2025 | 24 CWE |
Broken Access Control
Najraširenija ranjivost po obimu podataka. IDOR, eskalacija privilegija i CORS greška konfiguracije spadaju ovdje. Ostaje na prvom mjestu već dvije uzastopne liste.
Supply Chain Failures
Nova kategorija za 2025. godinu. Najviša prosječna stopa incidencije u testiranim podacima — više od 215.000 zabilježenih slučajeva. Pokriva cijeli softverski lanac isporuke.
Injection (A05)
Injection predvodi po ukupnom broju CVE zapisa, ali pada na #5 zahvaljujući modernim frameworkovima koji automatski štite od klasičnih napada poput SQL injection i XSS.
Tri Najopasnija Napada: SQL Injection, XSS i CSRF
Unutar kategorije Injection (A05:2025) nalaze se tri napada koja su decenijama na vrhu liste prijetnji za web aplikacije. Razumijevanje kako funkcionišu i kako ih spriječiti osnova je sigurnog kodiranja.
1. SQL Injection — Niska Učestalost, Visok Uticaj
SQL Injection nastaje kada napadač ubaci zlonamjerne SQL upite u polja za unos podataka web aplikacije, prevareći bazu podataka da izvrši neovlaštene komande. Rezultat može biti krađa podataka, brisanje ili potpuna kompromitacija baze. Prema OWASP klasifikaciji za 2025. godinu, SQL injection karakterizira niska učestalost ali visok uticaj — uspješna eksploatacija može dovesti do potpune kompromitacije baze podataka.
Konkretan primjer iz 2025. godine: u februaru je otkrivena PostgreSQL ranjivost (CVE-2025-1094) sa CVSS ocjenom 8.1 koja je zaobišla rutine za sigurno escapovanje stringova. U maju 2025. je vladinski portal probijena putem SQL injection napada, izlažući osjetljive podatke građana. Čak i kompanije poput Marriott International pretrpjele su ogromne štete — napad koji je počeo 2014. kompromitovao je 500 miliona zapisa gostiju.
Kako spriječiti SQL Injection
- ✓ Prepared Statements — Uvijek koristiti parametrizovane upite; baza uvijek razlikuje kod od podataka
- ✓ ORM biblioteke — Hibernate, TypeORM, Prisma, SQLAlchemy automatski generišu parametrizovane upite
- ✓ Princip najmanje privilegija — Baza podataka treba imati samo minimalne dozvole potrebne za rad aplikacije
- ✓ WAF zaštita — Web Application Firewall (npr. ModSecurity sa OWASP CRS pravilima) kao dodatni sloj odbrane
- ✗ Nikada ne graditi SQL upite dinamičkim spajanjem korisničkog unosa
2. Cross-Site Scripting (XSS) — Visoka Učestalost, Lančani Napadi
XSS nastaje kada aplikacija uključuje nepouzdane podatke u web stranice bez odgovarajuće validacije ili enkodiranja, omogućavajući napadačima da ubace klijentske skripte koje se izvršavaju u pretraživačima žrtava. Sa više od 30.000 CVE zapisa, XSS je najčešći tip injection ranjivosti. Postoje tri osnovna oblika: Stored XSS (zlonamjerni kod pohranjen na serveru), Reflected XSS (odmah vraćen u odgovoru) i DOM-based XSS (manipulacija DOM stabla bez serverskog učešća).
Posljedice XSS napada su ozbiljne: krađa session kolačića, preuzimanje naloga, pokretanje keyloggera za hvatanje lozinki, preusmjeravanje na phishing stranice ili isporuka malvera. Microsoftovo sigurnosno istraživanje iz novembra 2025. pokazalo je kako se XSS može kombinovati s CSRF ranjivostima i slabim Content Security Policy pravilima za postizanje udaljenog izvršavanja koda.
Kako spriječiti XSS napade
- ✓ Output encoding — Konvertovati specijalne znakove u HTML entitete prije renderovanja u pretraživaču
- ✓ Content Security Policy (CSP) — Ograničiti koje skripte se mogu izvršavati na stranici
- ✓ DOMPurify biblioteka — Za JavaScript/React aplikacije, sanitizovati sav korisnički unos
- ✓ Whitelist validacija — Dozvoliti samo poznate sigurne karaktere i formate, ne oslanjati se na blacklistu
- ✓ Server-side validacija — Klijentska validacija se lako zaobilazi alatima poput Burp Suite; uvijek validovati na serveru
3. Cross-Site Request Forgery (CSRF) — Tihi Napad na Sesiju
CSRF napad iskorišćava činjenicu da pretraživač automatski uključuje session kolačiće u svaki zahtjev prema određenoj domeni. Napadač prevari autentifikovanog korisnika da pošalje falsifikovani zahtjev — npr. putem ugrađene slike ili forme na zlonamjernoj stranici — bez znanja korisnika. Za razliku od XSS-a koji cilja korisnika ubacivanjem koda, CSRF šalje neovlaštene zahtjeve od strane pretraživača prema pouzdanoj aplikaciji.
Ključna razlika: XSS je ranjivost na strani klijenta koja cilja druge korisnike aplikacije, dok je SQL injection ranjivost na strani servera koja cilja bazu podataka aplikacije. CSRF je prikriveniji i teže ga je uočiti jer eksploatiše legitimne korisničke sesije u tišini.
Kako spriječiti CSRF napade
- ✓ CSRF tokeni — Generisati jedinstveni, nepredvidivi token za svaku sesiju i validovati ga na serveru
- ✓ SameSite Cookie atribut — Postaviti
SameSite=StrictiliSameSite=Laxza sve kolačiće sesije - ✓ Double Submit Cookie — Alternativna metoda gdje se token šalje i kao kolačić i kao parametar zahtjeva
- ✓ Provjera Origin/Referer zaglavlja — Odbaciti zahtjeve koji dolaze s neočekivanih domena
- ✗ CSRF tokeni ne štite od XSS napada — svaki zahtijeva zasebnu odbranu
Input Validacija — Temelj Sigurnog Kodiranja
Input validacija je kamen temeljac sigurnog razvoja softvera. Verificiranjem svakog unosa — od korisnika, API-ja ili sistema trećih strana — programeri osiguravaju da u aplikaciju ulaze samo pouzdani podaci. Ona provjerava tip, dužinu, format i sadržaj prije nego što podaci prodru dublje u sistem. Kombinovana s output encodingom, parametrizovanim upitima i striktnom validacijom sheme, kreira slojevitu odbranu koja dramatično smanjuje broj iskoristivih grešaka.
Tipovi Input Validacije
- ▸Validacija tipa — Provjera da li je unos broj, string, datum ili drugi očekivani tip podatka
- ▸Validacija dužine — Ograničiti maksimalnu dužinu unosa kako bi se spriječili buffer overflow napadi
- ▸Format validacija — Koristiti regularne izraze za provjeru formata (email, datum, telefon)
- ▸Range validacija — Za numeričke unose definisati minimalne i maksimalne dozvoljene vrijednosti
- ▸Whitelist pristup — Dozvoliti samo poznate sigurne vrijednosti, sigurniji od blackliste
Preporučene Biblioteke i Alati
- ✓Joi / Zod — Schema validacija za Node.js/TypeScript aplikacije
- ✓DOMPurify — Sanitizacija HTML unosa u JavaScript aplikacijama
- ✓OWASP ZAP — DAST alat za dinamičko testiranje aplikacija, integracija s CI/CD
- ✓SonarQube / Semgrep — SAST alati za statičku analizu koda, otkrivaju injection i kriptografske greške
- ✓Snyk / OWASP Dependency-Check — SCA alati za otkrivanje ranjivosti u zavisnostima (A03 kategorija)
Nove Kategorije u OWASP 2025: Supply Chain i Exceptional Conditions
Dvije potpuno nove kategorije u OWASP Top 10:2025 odražavaju modernu stvarnost razvoja softvera. Prema istraživanju Orca Security, čak 50% ispitanika rangiralo je Software Supply Chain Failures (A03) kao svoju primarnu brigu. Ova kategorija proširuje raniji fokus na "zastarjele komponente" na cijeli ekosistem: zavisnosti, build sisteme, CI/CD pipeline i distribucijsku infrastrukturu.
Primjeri iz prakse u 2025. godini uključuju malware kampanje skrivene u npm paketima koje su eksfiltrirале kredencijale, napade konfuzije zavisnosti koji su infiltrirali razvojne radne stanice te trovane popularne biblioteke poput chalk i debug preuzimane milionima puta. Svaka linija koda iz eksternih izvora mora biti tretirana kao potencijalna prijetnja.
Mishandling of Exceptional Conditions (A10) je nova kategorija koja naglašava važnost sigurnog upravljanja greškama. Loše upravljanje izuzecima može procuriti osjetljive podatke (stack traces, ključeve), zaobići kontrole (fail-open logika) ili izazvati denial-of-service. Prema OWASP anketi, 50% ispitanika rangiralo je ovu kategoriju kao svoju primarnu prijetnju u nastajanju.
Jeste li znali?
Prema IBM Cost of a Data Breach Report 2025, globalni prosječni trošak jednog sigurnosnog incidenta iznosi 4,44 miliona USD, a u Sjedinjenim Američkim Državama čak 10,22 miliona USD — što predstavlja historijski rekord za bilo koji region. Istovremeno, organizacije koje koriste AI u sigurnosti uštedile su prosječno 1,9 miliona USD po incidentu u poređenju s onima koje ne koriste automatizaciju. Prema Verizon DBIR 2025, čak 88% svih sajber incidenata uzrokovano je ljudskom greškom.
Best Practices: Sigurno Kodiranje u Praksi
Sigurno kodiranje nije jednokratni napor — ono zahtijeva kontinuiranu posvećenost i budnost kroz cijeli životni ciklus razvoja softvera. Prema OWASP preporukama, najefektivniji prvi korak prema sigurnijem kodiranju je usvajanje OWASP Top 10 smjernica na nivou organizacije.
Sigurnosne Provjere u SDLC
- ✓ Design faza — Threat modeling i sigurnosni pregled arhitekture
- ✓ Coding faza — SAST alati (SonarQube, Semgrep) integrisani u IDE
- ✓ Build faza — SCA skeniranje zavisnosti (Snyk, OWASP Dependency-Check)
- ✓ Test faza — DAST testiranje s OWASP ZAP ili Burp Suite
- ✓ Deploy faza — IaC skeniranje (Terraform, Pulumi) za konfiguracijsku sigurnost
- ✓ Produkcija — Penetration testing i kontinuirani monitoring (Grafana, Prometheus)
Autentifikacija i Upravljanje Sesijama
- ✓ Koristiti MFA za sve privilegovane operacije
- ✓ Pohraniti lozinke kao bcrypt hash sa saltom, nikada u plaintext
- ✓ Implementirati JWT s kratkim vremenom isteka i refresh token rotacijom
- ✓ Koristiti OAuth 2.0 za autorizaciju trećih strana
- ✓ Invalidovati sesije pri odjavi i postaviti timeout neaktivnosti
- ✓ Izbjegavati custom auth implementacije — koristiti provjerene biblioteke
AI-Generisani Kod i Sigurnost: Nova Prijetnja 2025
OWASP Top 10:2025 donosi i specifične smjernice za sigurnost AI-generisanog koda. Istraživanja su pokazala da LLM coding asistenti često generišu kod koji sadrži A03 Injection obrasce, A07 Authentication greške i A04 kriptografske slabosti — jer su trenirani na historijskim repozitorijumima koda koji prethode modernim sigurnosnim praksama. Svaka linija AI-generisanog koda mora proći isti SAST pregled kao i kod koji pišu ljudi — bez izuzetaka.
Prema IBM izvještaju za 2025. godinu, 16% svih sigurnosnih incidenata uključivalo je napadače koji koriste AI. Istovremeno, 63% kompanija koje su pretrpjele incident nije imalo AI governance politiku ili je još uvijek razvijalo jednu. Ovo naglašava važnost balansiranog pristupa: koristiti AI za ubrzanje razvoja, ali ne zanemariti sigurnosni pregled generisanog koda.
"Korišćenje OWASP Top 10 možda je najefektivniji prvi korak prema promjeni kulture razvoja softvera unutar vaše organizacije u jednu koja proizvodi sigurniji kod.
— OWASP Foundation, owasp.org (zvanična dokumentacija)
Pregled Sigurnosnih Alata po Kategoriji
| Alat | Tip | OWASP Kategorije | Integracija |
|---|---|---|---|
| SonarQube / Semgrep | SAST | A03 Injection, A04 Crypto, A07 Auth | CI/CD Pipeline |
| OWASP ZAP / Burp Suite | DAST | A01 Access Control, A02 Misconfig, A05 Injection | Runtime testiranje |
| Snyk / OWASP Dep-Check | SCA | A03 Supply Chain Failures | npm, Maven, pip |
| Checkmarx / Veracode | SAST + DAST | Svih 10 kategorija | Enterprise platforma |
| ModSecurity + OWASP CRS | WAF | A05 Injection, A01 Access Control | Nginx, Apache |
| Joi / Zod / Yup | Input Validacija | A05 Injection, A06 Insecure Design | Node.js / TypeScript |
Sigurnost web aplikacija u 2026. godini zahtijeva holistički pristup koji nadilazi puko ispravljanje pojedinačnih grešaka u kodu. OWASP Top 10:2025, zasnovana na analizi više od 175.000 CVE zapisa i potvrđena u januaru 2026. godine, jasno pokazuje da se fokus pomjerio ka cjelokupnom ekosistemu: od dizajna i konfiguracije, kroz sigurnost lanca isporuke softvera, do sigurnog upravljanja greškama. SQL injection, XSS i CSRF ostaju kritične prijetnje koje zahtijevaju konkretne tehničke mjere — prepared statements, output encoding, CSP zaglavlja i CSRF tokeni nisu opcija već obaveza. Kombinovanjem server-side input validacije, redovnog SAST/DAST skeniranja u CI/CD pipeline-u, principa najmanje privilegija i kontinuiranog monitoringa, razvojni timovi mogu dramatično smanjiti površinu napada i zaštititi kako korisničke podatke, tako i poslovni ugled svojih organizacija.


