📧 [email protected] 📞 +381 61 161 2299
OWASP A01: Broken Access Control

IDOR ranjivost: Kada broj u URL-u otvara tuđe podatke

2026-07-23 · Shieldome Scout

Insecure Direct Object Reference (IDOR) je Broken Access Control ranjivost koja napadaču dozvoljava da menjanjem identifikatora (ID, UUID, email) u zahtevima pristupi podacima ili akcijama koje mu nisu namenjene.

← Blog

Šta je IDOR?

Insecure Direct Object Reference (IDOR) se dešava kada aplikacija koristi identifikator koji kontroliše korisnik (ID, UUID, email, ime fajla) za direktan pristup objektu u bazi bez provere da li logovani korisnik ima pravo pristupa tom objektu.

Klasičan scenario

Korisnik pregleda svoju porudžbinu: https://prodavnica.rs/orders/1247

Menja broj: https://prodavnica.rs/orders/1246

Ako server ne proverava da li porudžbina 1246 pripada logovanom korisniku, napadač vidi tuđu porudžbinu — uključujući ime, adresu i detalje plaćanja.

Realni primeri iz bugbounty programa

Tipovi IDOR ranjivosti

URL/Query parameter IDOR

GET /api/users/1042/profile
→ promeni u /api/users/1043/profile

Body parameter IDOR

POST /api/update-address
{"user_id": 1042, "address": "Nova adresa"}
→ promeni user_id u 1043

IDOR putem predvidivog identifikatora

Sekvencijalni ID-ovi (1, 2, 3, ...) su najlakši za eksploatisanje — napadač jednostavno iterira. Ali i UUID-ovi mogu biti predvidivi ako se generišu slabim PRNG-om.

Blind IDOR

Server ne vraća podatke, ali izvršava akciju — npr. brisanje fajla, promena statusa, slanje emaila tuđem nalogu.

IDOR je broj jedan na OWASP Top 10 2021 (A01: Broken Access Control) jer ga automatski skeneri teško otkrivaju — potrebna je autentifikovana sesija i razumevanje aplikacione logike. Shieldome Scout testira vidljive obrasce pristupa sa validiranim sesijama.

Odbrana od IDOR-a

1. Autorizacione provere na svakom zahtevom

Svaki pristup objektu mora biti propraćen proverom: da li logovani korisnik ima pravo pristupa ovom specifičnom objektu?

order = Order.query.get(order_id)
if order.user_id != current_user.id:
    abort(403)  # Forbidden

2. Nikada ne verujte klijentskom ID-u za vlasništvo

Korisnik ne sme da kontroliše user_id ni u query parametrima ni u request body-ju. Uvek koristite ID iz autentifikovanog tokena/sesije.

3. Indirektni identifikatori

Umesto direktnog ID-a iz baze, koristite reference koji imaju smisao samo za tog korisnika — npr. UUID scope-ovan na korisnikovu sesiju.

4. Penetration testing i code review

IDOR zahteva manuelno testiranje: tester mora imati dva različita naloga i testirati pristup resursima jednog naloga sa drugim. Automatski skeneri ovo ne mogu pouzdano detektovati bez aplikacionog konteksta.

5. Logging neuspelih pokušaja pristupa

Ako korisnik pokušava pristupiti resursima koji ne postoje ili mu ne pripadaju, to mora biti zabeleženo. Više od 10 grešaka u kratkom periodu je signal za alarm.

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 →