CORS mi CSRF mi? Web Güvenlik Tehditlerinin Farkı
Giriş: Web Güvenliğinde İki Kritik Tehdit
Web uygulamalarının güvenliği, kullanıcı verilerini koruma açısından hayati önem taşır. CORS (Cross-Origin Resource Sharing) ve CSRF (Cross-Site Request Forgery), benzer adlara rağmen tamamen farklı mekanizmalarla çalışan ve farklı tehditleri temsil eden iki güvenlik konusudur. Bir saldırıyı önlemek için diğerinin çözümünü uygulamak, siber güvenlik stratejisinde kritik bir hata olabilir. Bu rehber, her iki tehdidi kapsamlı bir şekilde inceleyerek karar veren bir bakış açısı sunacaktır.
CORS Nedir? Kaynaklar Arası İletişim ve Güvenlik Sınırları
CORS, tarayıcıların farklı kaynaklardan (domain, protokol veya port) gelen verileri yönetme şeklini belirleyen bir tarayıcı güvenlik mekanizmasıdır. Bir web sitesinin başka bir sunucudan veri istemesi engellenir—buna "Same-Origin Policy" (Aynı Kaynaktan Gelen İstek Politikası) denir. CORS, bu kısıtlamayı kontrollü bir şekilde kaldırmayı sağlar.
CORS'un Temel Amacı:
- Sunucuların hangi dış kaynaklardan istekleri kabul edeceğini belirtmesi
- Tarayıcıya "bu isteği yapabilirsin" veya "yapmamalısın" talimatı vermesi
- Kontrollü şekilde çapraz kaynak erişimine izin vermesi
Örneğin, example.com'da yüklenen bir web sitesi, api.example.com'dan veri çekmek isterse CORS başlıkları kontrol edilir. Eğer sunucu izin vermişse istek başarılı olur; vermemişse tarayıcı isteği engeller.
CSRF Nedir? Sahte İsteklerin Tehlikesi
CSRF, saldırganın bir kullanıcıyı isteksizce istenmeyen eylemler gerçekleştirmeye ikna ettiği bir saldırı türüdür. Kullanıcı zaten oturum açmış bir siteye gelen kötü niyetli bir link, form veya komut dosyası yüklemesi saldırganın belirlemesi yeterlidir.
CSRF Saldırısı Senaryosu:
- Kullanıcı bankasına giriş yapıyor ve oturum açık kalıyor
- Farklı bir sekmede kötü amaçlı bir siteyi açıyor
- O site, kullanıcının bankasından para transferi yapan gizli bir istek gönderir
- Tarayıcı, kullanıcının bankaya ait çerezleri otomatik olarak gönderir
- Transfer tamamlanır; kullanıcı fark etmez
CSRF'nin tehlikesi, kullanıcının kimlik doğrulaması yapılmış olduğunun güvenilir kabul edilmesidir. İsteğin gerçekten o kullanıcıdan geldiğini doğrulamak için mekanizma yoktur.
CORS vs CSRF: Temel Farklar Tablosu
| Özellik | CORS | CSRF |
|---|---|---|
| Güvenlik Seviyesi | Tarayıcı seviyesinde güvenlik mekanizması | Uygulama mantığında güvenlik açığı |
| Saldırının Kaynağı | Çapraz kaynaktan gelen isteklerin engellenmesi | Aynı kaynaktan gelen sahte isteklerin yapılması |
| Kimlik Doğrulama | Kaynak (origin) kimliği doğrulanır | İsteğin gerçekten oturum açmış kullanıcıdan gelip gelmediği doğrulanmaz |
| Etkilenen Veri Tipi | Okuma (GET) istekleri daha korunmuş | Yazma (POST, PUT, DELETE) istekleri risk altında |
| Korunma Yöntemi | Sunucunun CORS başlıklarını ayarlaması | Token doğrulama, SameSite çerezleri, çift doğrulama |
Koruma Stratejileri: İki Farklı Tehdit, İki Farklı Çözüm
CORS Saldırılarına Karşı Korunma:
- Sunucu tarafında CORS başlıklarını sınırlı tutmak: Access-Control-Allow-Origin başlığını yalnızca güvenilir domainlere izin verecek şekilde ayarlamak
- Joker (*) kullanmaktan kaçınmak—bu, tüm kaynaklara izin verir ve tehlikelidir
- Hassas veriler için CORS'u tamamen devre dışı bırakmak
- CORS preflight isteklerini doğru şekilde işlemek
CSRF Saldırılarına Karşı Korunma:
- CSRF token kullanmak: Her form ve önemli işlem için sunucunun oluşturduğu benzersiz bir token eklemek ve doğrulamak
- SameSite çerez özniteliğini "Strict" veya "Lax" olarak ayarlamak—çerezlerin çapraz siteden gönderilmesini sınırlamak
- POST, PUT, DELETE gibi veri değiştiren işlemlerde referer başlığı kontrol etmek
- Çift doğrulama (2FA) eklemek—özellikle finansal işlemlerde
Pratikte İmplementasyon: Gerçek Senaryolar
Bir fintech uygulaması tasarlarken, hem CORS hem de CSRF korumalarına ihtiyaç duyabilirsiniz. Örneğin, mobil uygulamanız api.sirketiiniz.com'a istekler gönderirse CORS yapılandırması gerekir. Aynı zamanda para transferi gibi işlemler CSRF tokenlarıyla korunmalıdır. İkisini birbirinin yerine geçirmek işlemsel başarısızlıklara veya güvenlik açıklarına yol açabilir.
Eğitim seçiminizde, web güvenliği hakkında detaylı bilgi almak istiyorsanız bu iki konunun ayrı ayrı kapsamlı şekilde ele alındığı kursları tercih etmelisiniz. Sertifika programlarını incelerken, CORS ve CSRF konularının ne derinlikle anlatıldığını kontrol etmek kritik bir karşılaştırma parametresidir.
Sonuç: Bilinçli Güvenlik Kararı Almak
CORS ve CSRF, web güvenliğinin iki ayrı cephesini temsil eder. CORS, kaynaklar arası iletişimin kontrol edilmesi iken; CSRF, istek kaynağının doğrulanması konusudur. Başarılı bir güvenlik stratejisi, her iki mekanizmayı da doğru şekilde uygulamayı gerektirir. Geliştirici olarak ilerlemeyi hedefliyorsanız, bu temel kavramların net bir şekilde anlaşılması, daha sonraki adımlar için—örneğin OAuth, JWT veya endpoint güvenliği konularında ilerleme katederken—vazgeçilmez bir temel oluşturacaktır.