🔐API1:2023 — Broken Object Level Authorization
API’ler modern yazılım mimarilerinin merkezinde yer alır. Mikroservis yapıları, mobil uygulamalar ve üçüncü taraf entegrasyonlar sayesinde…
🔐API1:2023 — Broken Object Level Authorization

API’ler modern yazılım mimarilerinin merkezinde yer alır. Mikroservis yapıları, mobil uygulamalar ve üçüncü taraf entegrasyonlar sayesinde API’ler artık yalnızca veri sunan katmanlar değil, doğrudan iş süreçlerini yöneten kritik bileşenler hâline gelmiştir. Kullanıcı profilleri, siparişler, faturalar, hesaplar ve benzeri iş nesneleri API’ler aracılığıyla erişilir ve yönetilir.
Ancak bu mimarilerde en sık yapılan hatalardan biri, kimlik doğrulamanın (authentication) güvenlik için yeterli olduğunun varsayılmasıdır. Oysa API güvenliğinde asıl risk, kullanıcının kim olduğundan ziyade hangi nesnelere erişebildiği sorusunda gizlidir. İşte OWASP API Top 10:2023 listesinin ilk sırasında yer alan API1: Broken Object Level Authorization (BOLA), tam olarak bu noktada ortaya çıkar.
Broken Object Level Authorization Nedir?
Broken Object Level Authorization, bir API’nin kullanıcıdan gelen nesne tanımlayıcılarını (ID, UUID, key vb.) işlerken, bu nesnenin gerçekten ilgili kullanıcıya ait olup olmadığını doğrulamaması durumudur.
Başka bir ifadeyle sistem şu soruyu sorar:
“Bu isteği yapan kullanıcı kim?”
Ancak şu kritik soruyu sormaz:
“Bu kullanıcı, bu nesneye erişmeye yetkili mi?”
Bu eksiklik, kimliği doğrulanmış bir kullanıcının yalnızca bir ID değerini değiştirerek başka kullanıcılara ait verilere erişebilmesine yol açar. BOLA, bu yönüyle sessizdir; çoğu zaman hata üretmez, loglarda olağan bir istek gibi görünür ve uzun süre fark edilmeden veri sızıntısına neden olabilir.

Authentication Yeterli Değildir
BOLA zafiyetlerinin bu kadar yaygın olmasının temel nedeni, authentication ile authorization kavramlarının pratikte birbirine karıştırılmasıdır.
Birçok sistemde kullanıcı giriş yaptıysa, ilgili endpoint’e erişebileceği varsayılır. Oysa API’lerde yetkilendirme iki ayrı seviyede ele alınmalıdır: Birincisi, kullanıcının ilgili endpoint’i çağırmaya yetkili olup olmadığıdır. İkincisi ve çoğu zaman ihmal edileni ise, kullanıcının erişmeye çalıştığı nesnenin sahibi olup olmadığıdır.
BOLA, endpoint erişimi doğru kurgulanmış olsa bile, nesne sahipliği kontrolü yapılmadığında ortaya çıkar. Bu nedenle kod incelemelerinde ve güvenlik testlerinde sıklıkla gözden kaçar.
⚠️ Yaygın BOLA Senaryoları
Broken Object Level Authorization genellikle tahmin edilebilir ve tekrarlayan mimari hatalardan kaynaklanır.
Artan sayısal ID’lerin kullanıldığı API’lerde, /api/users/1001 veya /api/orders/45891 gibi endpoint’ler saldırgan için doğal bir hedef hâline gelir. Eğer backend tarafında nesnenin ilgili kullanıcıya ait olup olmadığı kontrol edilmezse, saldırgan yalnızca ID’yi değiştirerek başka kullanıcıların verilerine erişebilir.
Bir diğer yaygın hata, nesne sahipliği bilgisinin client’tan gelen parametrelere güvenilerek belirlenmesidir. userId veya benzeri alanların request body içinde alınması ve backend tarafından doğrulanmaması, BOLA için klasik bir giriş noktasıdır.
Ayrıca “UI’da bu ID görünmüyor” varsayımı da sık yapılan bir hatadır. API’ler kullanıcı arayüzünden bağımsız çalışır; saldırgan doğrudan API çağrısı yapar ve arayüz kısıtlamaları güvenlik sağlamaz.
Riskler ve Etkileri
Broken Object Level Authorization, yalnızca teknik bir zafiyet değil, doğrudan iş riskine dönüşen bir güvenlik problemidir.
Yetkisiz veri erişimi, KVKK ve GDPR kapsamındaki kişisel verilerin ifşasına yol açabilir. Bunun yanında saldırganlar, başka kullanıcılar adına veri güncelleme veya silme işlemleri gerçekleştirebilir. BOLA, Broken Authentication gibi diğer zafiyetlerle birleştiğinde hesap ele geçirme (account takeover) senaryolarına zemin hazırlar.
Sessiz ilerlemesi nedeniyle BOLA kaynaklı ihlaller genellikle geç fark edilir ve bu durum hem regülasyon ihlallerini hem de marka itibarına verilen zararı büyütür.
🛡️Önleme Stratejileri
BOLA riskini minimize etmek için API tasarımında nesne bazlı yetkilendirme bir standart hâline getirilmelidir.
Her veri erişiminde, erişilen nesnenin authenticated kullanıcıya ait olup olmadığı mutlaka doğrulanmalıdır. Bu kontroller yalnızca controller seviyesinde değil, servis veya domain katmanında merkezi şekilde uygulanmalıdır.
Tahmin edilebilir ID’ler yerine UUID veya dolaylı nesne referansları tercih edilmelidir. Varsayılan yaklaşım “deny by default” olmalı; açıkça izin verilmedikçe erişim reddedilmelidir.
Ayrıca object-level erişimler loglanmalı ve aynı kullanıcı tarafından ardışık veya olağandışı ID denemeleri anomali olarak değerlendirilmelidir. Bu noktada yalnızca test aşamasındaki kontroller yeterli değildir; runtime seviyesinde davranışsal analiz büyük önem taşır.
Modern API security çözümleri, API trafiğini analiz ederek bu tür nesne bazlı yetkilendirme ihlallerini gerçek zamanlı olarak görünür kılabilir.
🔎 Sonuç
API1:2023 Broken Object Level Authorization, API güvenliğinde yapılan en temel ama en yıkıcı hatalardan biridir. Kimliği doğrulanmış olmak, bir kaynağa erişim için tek başına yeterli değildir.
API güvenliğinde asıl soru:
“Kim giriş yaptı?” değil, “Bu kullanıcı neyi görmeye ve neyi değiştirmeye yetkili?” sorusudur.
Bu nedenle her API, nesne seviyesinde yetkilendirmeyi merkeze alan bütünsel bir güvenlik yaklaşımıyla tasarlanmalı ve izlenmelidir.
메타데이터
- post_id
- e7c9f90f1ecd
- slug
- api1-2023-broken-object-level-authorization-e7c9f90f1ecd
- url
- https://medium.com/@Apifort/api1-2023-broken-object-level-authorization-e7c9f90f1ecd
- canonical_url
- https://medium.com/@Apifort/api1-2023-broken-object-level-authorization-e7c9f90f1ecd
- author_url
- https://medium.com/@Apifort
- status
- ok
- fetched_at
- 2026-06-15 20:49:13