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 tenantId filtresi 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.

  1. CORS nedir? Neden CORS hatası alırız?OrtaWeb GüvenliğiFull Stack
  2. XSS ve CSRF saldırıları nedir, nasıl korunulur?ZorWeb GüvenliğiFull Stack
  3. Authentication ile authorization arasındaki fark nedir?KolayWeb GüvenliğiFull Stack
  4. Güvenli cookie ayarları nelerdir? Session hijacking nasıl önlenir?OrtaWeb GüvenliğiFull Stack
  5. Content Security Policy (CSP) nedir ve nasıl yapılandırılır?ZorWeb GüvenliğiFull Stack
  6. OWASP Top 10 nedir? En önemli maddelerini özetleyin.OrtaWeb GüvenliğiFull Stack

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle