REST API’lerde CSRF koruması: Gerçekten gerekli mi?

kahve_delisi

Yeni Üye
Katılım
Eyl 2026
Konular
1
Mesajlar
1
Tepki puanı
0
Görüntülenme
0

1. Kimlik Doğrulama Türleri ve CSRF Riski​

Kimlik DoğrulamaCSRF Varsa?Açıklama
Cookie‑tabanlı oturum (ör. session_id)EvetTarayıcı, otomatik olarak cookie gönderir. Saldırgan, hedef siteye sahte GET/POST gönderebilir.
Token‑tabanlı (Bearer) auth (Authorization: Bearer <token>)Düşük / HayırToken, request header’da bulunur; tarayıcı, otomatik olarak başlık eklemez.
Mutual TLSHayırSertifikalar eşsizdir, CSRF otomatik olarak engellenir.

Not: Sadece kimlik doğrulaması değil, aynı zamanda CORS ve SameSite politikaları da riskleri azaltır.

2. CSRF Önlemi Seçenekleri​


ÖnlemUygulanışHangi senaryolarda önerilir?
CSRF Token (örn. X-CSRF-Token)Sunucu bir token üretir, response body veya header’da gönderir; client her değişiklik isteğinde aynı token gönderir.Cookie‑tabanlı oturumlar, tek sayfa uygulamaları için.
Custom Header (örn. X-Requested-With)Sadece belirli başlık mevcutsa istek kabul edilir.Basit API, yalnızca belirli istemcilerden gelen istekleri kabul etmek istendiğinde.
SameSite=Lax/StrictTarayıcı oturum cookie’lerini üçüncü‑taraflı isteklerde göndermeyi engeller.En yaygın ve en basit koruma, cookie‑tabanlı sistemlerde.
CORS’ı sıkılaştırmakAccess-Control-Allow-Origin, Access-Control-Allow-Credentials ayarlarıyla sadece güvenilir domainlerde istek izin verilir.API v3, sadece belirli domainlerin erişimine izin verildiğinde.

Örnek: SameSite Kullanımı (Apache)​


Kod:
<IfModule mod_headers.c>
  Header always edit Set-Cookie ^(.*)$ $1;SameSite=Strict;Secure
</IfModule>

Örnek: token‑tabanlı API (Node.js)​


JavaScript:
app.post('/api/update', (req, res) => {
  const auth = req.headers.authorization;
  if (!auth || !auth.startsWith('Bearer ')) return res.status(401);

  const token = auth.split(' ')[1];
  // token doğrulama işlemi
  // ...
});

3. Hangisini Seçmeli?​


DurumÖnerilen Strateji
Sadece tarayıcı tabanlı istemciler (ör. SPA)SameSite=Lax/Strict + CSRF Token
Tarayıcı + üçüncü taraf API istemcileriSameSite + CORS + CSRF Token
Token‑tabanlı (Bearer) auth, yalnızca sunucu‑to‑sunucuHiçbir CSRF önlemi gerekmez
Mixed (Cookie + token)Cookie için SameSite, token için CSRF Token

Uyarı: CSRF token’ı yalnızca sadece aynı domain içinde oluşturulup okunur; token’ı URL parametresi olarak göndermek, CSRF korumasını zayıflatır.
Yedekleme: Üretim ortamında değişiklik yapmadan önce test ortamında tek tek adımları çalıştırın.

4. Son Soru​

REST API’nizi bir SPA ile geliştiriyor ve session_id cookie’lerini kullanıyorsanız, SameSite ve CSRF token kombinasyonunu uyguladınız ama yine de saldırı riski var mı? Tecrübelerinizi paylaşın.
 
Geri
En Üst