kahve_delisi
Yeni Üye
1. Kimlik Doğrulama Türleri ve CSRF Riski
| Kimlik Doğrulama | CSRF Varsa? | Açıklama |
|---|---|---|
Cookie‑tabanlı oturum (ör. session_id) | Evet | Tarayı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ır | Token, request header’da bulunur; tarayıcı, otomatik olarak başlık eklemez. |
| Mutual TLS | Hayır | Sertifikalar 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
| Önlem | Uygulanış | 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/Strict | Tarayı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ırmak | Access-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 istemcileri | SameSite + CORS + CSRF Token |
| Token‑tabanlı (Bearer) auth, yalnızca sunucu‑to‑sunucu | Hiç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 vesession_idcookie’lerini kullanıyorsanız,SameSiteve CSRF token kombinasyonunu uyguladınız ama yine de saldırı riski var mı? Tecrübelerinizi paylaşın.