IDOR (Insecure Direct Object Reference) nedir? Bir API'de nasıl tespit eder ve önlersiniz?
Cevap
IDOR, kullanıcının bir kaynağa ID'sini değiştirerek yetkisi olmadığı halde erişebilmesidir. OWASP Top 10'daki Broken Access Control kategorisinin en yaygın örneğidir. Kimlik doğrulama (authentication) yapılmıştır, ancak "bu kaynak bu kullanıcıya mı ait?" kontrolü (authorization) unutulmuştur.
// YANLIŞ: giriş yapmış herkes, herhangi bir faturayı görebilir
app.get("/api/invoices/:id", requireAuth, async (req, res) => {
const invoice = await db.invoice.findUnique({ where: { id: req.params.id } });
res.json(invoice);
});
// DOĞRU: sahiplik sorgunun içinde kontrol edilir
app.get("/api/invoices/:id", requireAuth, async (req, res) => {
const invoice = await db.invoice.findFirst({
where: { id: req.params.id, accountId: req.user.accountId },
});
if (!invoice) return res.status(404).end(); // varlığını da sızdırma
res.json(invoice);
});Önleme
- Her endpoint'te nesne seviyesinde yetki kontrolü yapın; sadece "giriş yapmış mı" yetmez. Okuma, güncelleme, silme ve dosya indirme endpoint'lerinin hepsi kontrol edilmeli.
- Kontrolü merkezileştirin: policy katmanı (CASL, Casbin), repository'de zorunlu
tenantIdfiltresi veya PostgreSQL Row Level Security. - Frontend'de butonu gizlemek güvenlik değildir; saldırgan isteği doğrudan atar.
- UUID kullanmak tahmin etmeyi zorlaştırır ama yetki kontrolünün yerini tutmaz.
- Toplu (bulk) endpoint'ler, GraphQL resolver'ları ve nested route'lar (
/projects/1/tasks/99, task gerçekten project 1'e mi ait?) sık gözden kaçar.
Tespit
İki farklı test kullanıcısıyla, A kullanıcısının token'ı ile B'nin kaynak ID'lerini isteyen otomatik testler yazın. Burp Suite gibi araçlarla manuel test de yapılabilir.
İlgili Web Güvenliği soruları
- CORS nedir? Neden CORS hatası alırız?
- XSS ve CSRF saldırıları nedir, nasıl korunulur?
- Authentication ile authorization arasındaki fark nedir?
- Güvenli cookie ayarları nelerdir? Session hijacking nasıl önlenir?
- Content Security Policy (CSP) nedir ve nasıl yapılandırılır?
- OWASP Top 10 nedir? En önemli maddelerini özetleyin.
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.