Nazaj na blog

Avtorizacija API: odkrivanje in odprava BOLA/IDOR

September 13, 2026 8 min branja
Avtorizacija API: odkrivanje in odprava BOLA/IDOR
Nazadnje posodobljeno:

Pregled virov: 13. september 2026. Spodnji postopki in tabele so predlogi za pooblaščen pregled. Sklici utemeljujejo tehnične lastnosti in priporočila virov; ne pomenijo, da vir predpisuje točno ta obseg ali obliko evidence.

API lahko pravilno avtenticira vsako zahtevo, vendar uporabniku vseeno vrne ali spremeni podatek druge stranke. Broken Object Level Authorization (BOLA), pogosto imenovan tudi Insecure Direct Object Reference (IDOR), nastane, kadar aplikacija sprejme identifikator objekta, ne preveri pa, ali lahko klicatelj na tem konkretnem objektu izvede zahtevano dejanje. Identifikator je lahko številka, UUID, ime datoteke, številka naročila ali posredni ključ. Sprememba zapisa identifikatorja ne odpravi pomanjkljivosti v avtorizaciji. 1

BOLA je smiselno preveriti zgodaj, saj API-ji identifikatorje pogosto izpostavijo v poteh, telesih zahtev, mobilnih odjemalcih, izvozih in podpornih orodjih. Obramba ne sme temeljiti na tem, da uporabnik identifikatorja ne pozna. Strežnik mora za vsak objekt in vsako pomembno dejanje sprejeti odločitev o avtorizaciji. 1

Prispevek opisuje pristop pooblaščenega pregleda in model odprave. Pri preverjanju uporabite dogovorjene račune in varne reprezentativne zapise. Brez izrecnega obsega ne dostopajte do dejanskih podatkov strank in ne spreminjajte produkcijskih podatkov, kadar to ni potrebno. 1

Popišite vir in odločitev

Pred preverjanjem opišite vire in dejanja API-ja. Pri vsaki končni točki določite, kateri objekt bere ali spreminja, katere identifikatorje sprejme, kateri uporabnik ali storitvena identiteta jo kliče in kakšno razmerje mora imeti klicatelj do objekta. Razmerje je lahko lastništvo, članstvo v organizaciji ali projektu, delegirana vloga, dodeljen primer, pravica podpore ali izrecno deljenje. 1

Ne omejite se na običajna dejanja ustvarjanja, branja, spremembe in brisanja. V pregled vključite prenose datotek, izvoze, iskalne filtre, priloge, množične operacije, zgodovino, komentarje, spletne kljuke, asinhrona opravila, skrbniške funkcije in druge različice API-ja. Uporabnik je lahko blokiran pri neposrednem branju računa, vendar ga pridobi prek izvoza ali povezave do ustvarjenega dokumenta. 1

Ločite meje med najemniki od mej vlog. Uporabnik ima lahko pravico do zapisov svoje organizacije, ne pa do vseh zapisov znotraj nje. Skrbnik lahko upravlja nastavitve računa, vendar ni nujno upravičen do branja vse zaščitene vsebine. Stanje »avtenticiran« pomeni samo, da je identiteta preverjena; ne pomeni, da je dejanje dovoljeno. 1

Meje objektov preverjajte z nadzorovanimi podatki

Za uporaben pregled pripravite vsaj dve testni identiteti z namerno različnima odnosoma do reprezentativnih objektov: na primer dve ločeni organizaciji, dva projekta v isti organizaciji in vlogo s povišanimi, vendar omejenimi pravicami. Ustvarite ali določite testne zapise, ki jih je varno brati in spreminjati. Pričakovani rezultat določite pred zahtevo. 1 3

Nato preverite, ali API enako odloča pri različnih poteh in metodah. Zahteva mora biti zavrnjena, kadar klicatelj spremeni sklic na objekt, s katerim nima dovoljenega razmerja. Enako preverjanje mora veljati za branje, spremembo, brisanje, priloge, spremembo stanja in množične operacije. Preverite neposredne identifikatorje ter identifikatorje v JSON-u, poizvedbenih parametrih, kazalcih strani, filtrih in definicijah opravil. 1 3

Rezultat je treba opisati natančno. Uspešen odgovor, ki vsebuje samo dovoljene podatke, potrjuje kontrolo v preverjenem primeru, ne pa varnosti celotnega API-ja. Odgovor z zavrnitvijo je lahko pravilen, vendar sam po sebi ne potrjuje zaščite vseh alternativnih poti. V ugotovitvi navedite končno točko, vrsto objekta, akterja, predvideno razmerje, odziv in omejitev testa. Ne objavljajte dejanskih identifikatorjev, žetonov, teles zahtev ali podatkov strank. 1 3

Izmišljena tabela odločitev avtorizacije

Spodnja matrika je pripomoček za načrtovanje preizkusov izmišljenega API-ja za račune. Organizaciji »Northwind« in »Fabrikam« sta izmišljeni. Tabela prikazuje pričakovani pravilnik, ne trditve o dejanski aplikaciji. Pri preverjanju je treba poleg rezultata HTTP preveriti vrnjene podatke in končno stanje objekta. 2

Akter in obseg Dejanje nad izmišljenim objektom Pričakovana odločitev Preverjanje
Član organizacije Northwind Branje računa organizacije Northwind Dovoljeno Vrne se samo zahtevani račun organizacije Northwind z dovoljenimi polji
Član organizacije Northwind Branje računa organizacije Fabrikam Zavrnjeno Polja računa, metapodatki prilog in podatki o obstoju računa organizacije Fabrikam se ne razkrijejo preko izbranega modela napake
Odobritelj plačil Northwind Sprememba stanja računa Northwind, ki je dodeljen tej vlogi Dovoljeno Stanje se spremeni enkrat, revizijska polja pokažejo odobritelja, nepovezana polja ostanejo nespremenjena
Odobritelj plačil Northwind Izvoz računov organizacije Fabrikam Zavrnjeno Opravilo izvoza se ne ustvari in podatki druge organizacije niso na voljo
Podporna vloga brez izrecne pravice Prenos priloge računa Northwind Zavrnjeno Vsebina priloge in njeni metapodatki ostanejo nedostopni

Tabela pokriva samo odločitve na ravni objektov. Ločeno je treba preveriti avtorizacijo funkcij, na primer ali sme vloga sploh uporabiti skrbniško končno točko, in avtorizacijo lastnosti, ki določa dostop do posameznih polj. 2

Pogoste napake pri zasnovi

Ena od napak pri zasnovi je avtorizacija v odjemalcu namesto na strežniku. Skrit gumb ali filtriran pogled v mobilni aplikaciji ne omeji neposredne zahteve API. Druga napaka je preverjanje pravic na glavnem objektu, ne pa tudi pri podrejenih objektih, kot so datoteke, komentarji, zapisi odobritev ali izvozi poročil. 2

Težave se pojavijo tudi med preverjanjem in dejanskim dejanjem. Opravilo lahko članstvo preveri ob ustvarjanju, izvede pa se pozneje, ko je bil dostop že odstranjen. Predpomnilniki, podpisane povezave za prenos, delavci v ozadju in porabniki dogodkov potrebujejo lastna pravila avtorizacije in veljavnosti. Dejstvo, da je zahtevo ustvarila interna storitev, ne pomeni samodejno, da je dejanje dovoljeno. 2

V okoljih z več najemniki dostop odpove, kadar je filter najemnika neobvezen, izhaja iz vrednosti, ki jo pošlje odjemalec, ali se med potmi za branje uporablja nedosledno. Kontekst najemnika mora izhajati iz zaupanja vredne identitete na strežniku ali zahtevka seje. Uporabiti ga je treba, preden poizvedba vrne objekt. Globalna pridobitev objekta in naknadna primerjava lastništva lahko razkrijeta obstoj podatka prek različnih napak, časa odziva ali metapodatkov. 2

Avtorizacijo vgradite v strežniško mejo

Uporabite strežniško plast za avtorizacijo, ki prejme avtenticiranega akterja, dejanje, vrsto vira in identifikator ali omejeni objekt. Preden aplikacija vrne vsebino ali spremeni stanje, mora plast sprejeti odločitev po pravilniku. Centralizacija zmanjšuje razhajanja, vendar se mora ujemati z arhitekturo; manjša storitev lahko uporabi dobro preizkušeno metodo domenskega modela, širša platforma pa skupen mehanizem pravil. 2

Kjer je mogoče, omejite dostop že na ravni poizvedbe. Namesto globalnega nalaganja objekta po identifikatorju naj repozitorij uporabi kontekst najemnika in razmerja klicatelja. Storitev mora »ni najdeno« in »ni dovoljeno« obravnavati dosledno glede na to, ali je razkritje obstoja objekta sprejemljivo. Tak vzorec zmanjša verjetnost, da nova končna točka pozabi bistveni pogoj. 2

Pravila določite z dejanji, ne samo z vlogami. »Lahko prebere naročilo«, »lahko odobri plačilo« in »lahko prenese prilogo« so ločene odločitve. Ime vloge je vhod v odločitev, ne splošno dovoljenje. Pri delegiranem dostopu beležite, kdo ga je dodelil, za katere objekte velja, kdaj poteče in kako se preklic prenese v predpomnilnike in opravila v ozadju. 2

Preverjanje naj ostane del razvoja

Enotski testi naj neposredno preverjajo pravila: dovoljeno lastništvo, zavrnjen dostop med najemniki, delegiran dostop, poteklo dovoljenje in upravičene izjeme. Integracijski testi naj uporabijo dejanske končne točke z ločenimi identitetami in zapisi. Kadar obstajajo, dodajte pokritost za podrejene vire, paketne zahteve, asinhrona opravila in druge različice API-ja. 2

Testni podatki morajo napako jasno pokazati. Če imata organizaciji enaka vzorčna zapisa, je lahko odziv videti pravilen, čeprav izhaja iz napačnega najemnika. Uporabite razločljive, neobčutljive testne podatke in preverite status ter obseg vrnjenih objektov. Sam test uporabniškega vmesnika ne zadošča, saj ne more dokazati strežniškega preverjanja. 2

Pri spremembah avtorizacije naj kodo pregleda oseba, ki razume razmerje med virom in poslovnim postopkom. Varnostna ekipa lahko zagotovi vzorce in pokritost, lastniki produkta pa pogosto poznajo pravilo, ki loči upravičeno deljenje od izpostavitve. Za pomembne vire hranite različico zapisa o odločitvi, da bodo vzdrževalci razumeli namen pravila. 2

Beleženje in odziv

Beležite odločitve avtorizacije v obsegu, ki podpira preiskavo, ne da bi dnevniki postali nova zbirka občutljivih podatkov. Kjer je izvedljivo, zabeležite akterja, dejanje, vrsto vira, rezultat, identifikator povezave zahteve ter razlog ali različico pravila. Surova telesa zahtev omejite in dnevnike zaščitite po enakih pravilih razvrstitve podatkov kot aplikacijo. 2 3

Opozorila naj ciljajo ponavljajoče se zavrnitve med različnimi področji dostopa, nenavaden obseg sklicev na veliko objektov in skrbniške spremembe pravil deljenja ali avtorizacije. Povečanje zavrnitev lahko povzroči tudi napaka odjemalca, zato pregled potrebuje produktni kontekst. Ob potrjeni pomanjkljivosti najprej določite prizadete različice končnih točk, razrede podatkov, najemnike, časovno obdobje in razpoložljive dnevnike, preden sklepate o izpostavljenosti. 2 3

Vrstni red odprave

Najprej zajezite prizadeto pot: onemogočite nevarno dejanje ali uporabite konservativno omejitev na strežniku, dokler popravek ni pripravljen. Nato objektno odločitev uveljavite na vseh poteh, ki uporabljajo vir, tudi pri opravilih v ozadju in izvozih. Popravite vzorec dostopa do podatkov, da sta najemnik in razmerje obvezna, dodajte regresijske teste z ločenimi identitetami in preverite sosednje končne točke, ki uporabljajo isti repozitorij ali pretvornik podatkov. 2

Po objavi s testnimi zapisi potrdite, da dovoljen dostop še deluje, dostop iz drugega področja pa je zavrnjen. Dnevnike preglejte za znake morebitne pretekle zlorabe pomanjkljivosti samo v okviru odobrenega postopka obravnave incidenta. Trajna odprava je usklajen model avtorizacije, ne seznam blokiranih identifikatorjev iz enega testa. 2

Pogosta vprašanja

Ali UUID prepreči IDOR?

Ne. UUID je morda težje uganiti, lahko pa se pojavi v povezavi, dnevniku, prometu odjemalca, izvozu ali posredovanem sporočilu. Strežnik mora preveriti, ali lahko klicatelj dostopa do navedenega objekta. 1

Ali naj API ob nedovoljenem objektu vrne 403 ali 404?

Izberite dosledno vedenje glede na to, ali je razkritje obstoja objekta sprejemljivo. Obe možnosti zahtevata enako strežniško preverjanje in morata biti dokumentirani za odjemalce. 2

Ali prehod API odpravi BOLA?

Prehod API lahko uveljavi splošno avtentikacijo in pravila usmerjanja. Običajno ne pozna poslovnega razmerja med klicateljem in konkretnim računom, datoteko ali projektom. Objektna avtorizacija ostane odgovornost aplikacije. 2

Notranje povezave: Strokovno področje API · Širše testiranje API · Ozadje JWT · Razlike pri GraphQL

Sources / Viri

  1. OWASP API Security Top 10 2023: Broken Object Level Authorization — Access/review date / datum dostopa oziroma pregleda: 2026-09-13.
  2. OWASP Authorization Cheat Sheet — Access/review date / datum dostopa oziroma pregleda: 2026-09-13.
  3. OWASP Web Security Testing Guide v4.2: Introduction and reporting requirements — Access/review date / datum dostopa oziroma pregleda: 2026-09-13.
Vid Grosek

Vid Grosek

Etični heker & Penetracijski tester

Pomagam slovenskim podjetjem odkriti varnostne ranljivosti, preden jih odkrijejo napadalci. Z več kot 18 leti izkušenj v kibernetski varnosti.

Vse objave

Komentarji

Ni še komentarjev. Bodite prvi!

Dodaj komentar

Vam je bil članek všeč?

Prijavite se na newsletter za mesečne varnostne vpoglede.

Prijavite se