CSRF Saldırısı Nedir? Web Siteleri Cross-Site Request Forgery Açığından Nasıl Korunur?

batuhanunalir

👑Tanınmış üye
Yazar
📅Katılım
27 Tem 2025
💬Mesajlar
1,002
🎭Tepki puanı
148
🏆kupalar
63
🌟Puan
252
💵Bakiye
0TL

CSRF Saldırısı Nedir? Web Siteleri Cross-Site Request Forgery Açığından Nasıl Korunur?​

Web siteleri kullanıcıların giriş yaptıktan sonra profil güncellemesi, parola değiştirme, ödeme başlatma veya başka işlemler gerçekleştirmesine izin verir. Bu işlemler sırasında tarayıcı, kullanıcının oturum bilgilerini otomatik olarak gönderebilir. Uygulama, isteğin gerçekten kullanıcının bilinçli eylemiyle başlatıldığını yeterince doğrulamıyorsa Cross-Site Request Forgery (CSRF) adı verilen güvenlik riski ortaya çıkabilir.

CSRF saldırısında amaç, kullanıcının tarayıcısını kullanarak ilgili web sitesine istenmeyen bir işlem yaptırmaktır. Kullanıcı daha önce hizmette oturum açmışsa ve uygulama gerekli kontrolleri yapmıyorsa, saldırganın hazırladığı bir sayfa veya bağlantı kullanıcının haberi olmadan istek oluşturabilir. Bu risk, özellikle hesap ayarları ve finansal işlemler gibi hassas işlevlerde önemlidir.

CSRF Nedir?​

CSRF, oturum açmış bir kullanıcının tarayıcısından, kullanıcının amaçlamadığı bir işlemin güvenilir bir web uygulamasına gönderilmesini hedefleyen saldırı türüdür. Tarayıcı bazı oturum çerezlerini isteklerle otomatik olarak ilettiği için uygulama, isteğin kullanıcı tarafından gerçekten başlatıldığını varsayabilir.

Örneğin bir web uygulamasında hesap ayarlarını değiştiren bir işlem yalnızca kullanıcının oturum çerezine dayanıyorsa, saldırgan kullanıcıyı bu işlemi tetikleyen bir sayfaya yönlendirmeye çalışabilir. Uygulama isteğin kaynağını veya geçerli bir CSRF belirtecini kontrol etmiyorsa işlem gerçekleştirilebilir.

CSRF, kullanıcının parolasının mutlaka ele geçirilmesini gerektirmez. Bununla birlikte saldırının başarılı olması için uygulamanın belirli güvenlik koşullarını taşıması gerekir. Her web sitesi ve her işlem aynı ölçüde savunmasız değildir.

CSRF Saldırısı Nasıl Çalışır?​

Bir kullanıcının belirli bir web sitesinde oturum açtığını düşünelim. Tarayıcı, o siteye yapılan bazı isteklerde oturum çerezini otomatik olarak gönderebilir. Kullanıcı daha sonra saldırganın kontrol ettiği bir sayfayı ziyaret ederse bu sayfa, hedef uygulamaya istek göndermeyi deneyebilir.

Hedef uygulama, isteğin gerçekten kullanıcı tarafından başlatıldığını doğrulamak yerine yalnızca oturum çerezinin varlığına bakıyorsa yetkisiz işlem riski oluşabilir. Bu durum, saldırganın uygulamadaki bir açığı kullanarak kullanıcı adına işlem yaptırmasına yol açabilir.

Ancak modern tarayıcılar ve web uygulamaları bu tür saldırıları zorlaştıran çeşitli mekanizmalara sahiptir. Çerezlerin SameSite ayarları, CSRF belirteçleri, kaynak doğrulaması ve doğru istek yöntemlerinin kullanılması riski azaltabilir. Savunmanın etkinliği, bu mekanizmaların birlikte ve doğru uygulanmasına bağlıdır.

CSRF Hangi İşlemleri Etkileyebilir?​

CSRF, kullanıcının oturumuyla gerçekleştirilebilen ve yeterli ek doğrulama içermeyen işlemleri hedefleyebilir. Riskli işlevler uygulamanın türüne göre değişir.

Örnekler arasında şunlar bulunur:

  • Hesap e-posta adresini veya profil bilgilerini değiştirmek.
  • Kullanıcının tercihlerini veya güvenlik ayarlarını güncellemek.
  • Bir gönderi yayımlamak veya içerik silmek.
  • Alışveriş sepeti ya da sipariş işlemlerini etkilemek.
  • Yetkili bir kullanıcının yönetim panelinde işlem yapmasını sağlamak.
Bu örnekler, her uygulamada CSRF açığının bulunduğu anlamına gelmez. Ayrıca hassas işlemlerde yalnızca CSRF koruması yeterli olmayabilir; yeniden kimlik doğrulama, işlem onayı veya ek doğrulama gibi önlemler de gerekebilir.

CSRF Token Nedir ve Nasıl Koruma Sağlar?​

CSRF token, uygulamanın isteğin meşru bir sayfa veya oturum bağlamından geldiğini kontrol etmesine yardımcı olan, tahmin edilmesi zor bir belirteçtir. Uygulama, belirteci sayfaya veya oturuma uygun biçimde bağlar ve durum değiştiren isteklerde geçerli bir belirteç sunulmasını ister.

Saldırganın kontrol ettiği farklı bir web sitesi, çoğunlukla hedef uygulamanın CSRF belirtecini okuyamaz. Tarayıcıdaki aynı kaynak politikası bu tür erişimleri sınırlandırır. Bu nedenle saldırgan, hedef uygulamanın beklediği geçerli belirteci gönderemeyebilir.

CSRF token uygulamanın sunucu tarafında doğrulanmalıdır. Belirtecin varlığını yalnızca istemci tarafında kontrol etmek yeterli değildir. Ayrıca belirteçler URL gibi istemeden kaydedilebilecek veya başka sistemlere aktarılabilecek alanlara yerleştirilmemelidir.

Token yapısı kullanılan web çerçevesine uygun olmalı ve güvenilir bir uygulama tarafından yönetilmelidir. Kendi belirteç mekanizmasını oluşturmak yerine çerçevenin sunduğu yerleşik CSRF korumasını kullanmak genellikle daha güvenlidir.

SameSite Çerez Ayarı CSRF Riskini Azaltır mı?​

SameSite, tarayıcının bir çerezi farklı site bağlamlarında hangi koşullarda göndereceğini belirlemeye yardımcı olur. Uygun yapılandırıldığında, başka bir siteden başlatılan bazı isteklerde oturum çerezinin gönderilmesini sınırlandırabilir.

SameSite ayarları farklı çalışma biçimlerine sahip olabilir. Seçilen değer, uygulamanın giriş akışına, dış hizmetlerle entegrasyonlarına ve kullanıcı deneyimine göre belirlenmelidir. Yanlış yapılandırma bazı meşru işlevleri bozabilir.

Bu özellik CSRF savunmasına katkı sağlar ancak her durumda tek başına yeterli kabul edilmemelidir. Özellikle hassas işlemlerde CSRF token, kaynak başlığı kontrolleri ve uygun yetkilendirme mekanizmalarıyla birlikte değerlendirilmelidir.

GET ve POST İstekleri Güvenlik Açısından Neden Önemlidir?​

HTTP yöntemleri, bir web uygulamasının isteği nasıl yorumlaması gerektiğini belirtir. GET istekleri normalde veri almak için kullanılmalı; hesap değiştirme, kayıt silme veya ödeme başlatma gibi durum değiştiren işlemler GET üzerinden gerçekleştirilmemelidir.

Durum değiştiren işlemleri GET ile yapmak, bağlantıların yanlışlıkla açılması, tarayıcıların istekleri önceden getirmesi veya başka sistemlerin bağlantıları otomatik işlemesi gibi sorunlara yol açabilir. Bu tasarım hatası CSRF riskini artırabilir.

POST kullanmak ise tek başına CSRF koruması sağlamaz. Tarayıcı, uygun koşullarda başka bir sayfadan POST isteği gönderebilir. Bu nedenle durum değiştiren işlemler uygun HTTP yöntemiyle tasarlanmalı ve ayrıca CSRF doğrulaması uygulanmalıdır.

CSRF ile XSS Arasındaki Fark Nedir?​

CSRF ve XSS farklı saldırı türleridir. CSRF, kullanıcının tarayıcısını kullanarak hedef uygulamaya istenmeyen bir işlem yaptırmaya çalışır. XSS ise uygulamadaki güvenli olmayan veri işleme nedeniyle saldırgan tarafından kontrol edilen kodun hedef sitenin bağlamında çalışmasına dayanır.

Bu iki açık türü farklı savunma yöntemleri gerektirir. CSRF için token, SameSite çerez ayarları ve kaynak doğrulaması önemlidir. XSS içinse bağlama uygun çıktı kodlama, güvenli HTML işleme ve içerik güvenliği politikaları öne çıkar.

Bununla birlikte bir uygulamada XSS açığı bulunması, CSRF korumasının etkinliğini de etkileyebilir. Aynı kaynakta kod çalıştırabilen bir saldırgan, bazı CSRF koruma mekanizmalarını aşmaya çalışabilir. Bu nedenle her iki açık türü de ayrı ayrı ele alınmalı ve uygulamanın genel güvenliği birlikte değerlendirilmelidir.

CSRF Açıkları Nasıl Test Edilir?​

Test sürecinde uygulamanın durum değiştiren işlemleri belirlenmelidir. Profil güncelleme, parola değiştirme, içerik yayımlama ve yönetici işlemleri bu kapsama girebilir. Her işlemde CSRF korumasının bulunup bulunmadığı ve sunucuda doğrulanıp doğrulanmadığı incelenmelidir.

Geliştiriciler, eksik veya geçersiz token ile gönderilen isteklerin reddedildiğini kontrol etmelidir. Aynı şekilde oturum çerezlerinin ve kaynak başlıklarının nasıl değerlendirildiği de incelenebilir. Testler, uygulamanın normal işleyişini bozmayan kontrollü bir ortamda yapılmalıdır.

Otomatik güvenlik araçları bazı riskleri tespit edebilir; ancak uygulamanın iş mantığına bağlı sorunların uzman tarafından değerlendirilmesi gerekebilir. Testler yalnızca yetki verilen sistemlerde yapılmalı ve gerçek kullanıcıların işlemleri etkilenmemelidir.

CSRF Koruması İçin Güvenlik Kontrol Listesi​

  • Durum değiştiren bütün işlemleri belirleyin.
  • Uygun web çerçevesinin yerleşik CSRF korumasını etkinleştirin.
  • CSRF tokenlarını sunucu tarafında doğrulayın.
  • Oturum çerezlerini uygun SameSite ayarlarıyla yapılandırın.
  • GET istekleriyle durum değiştiren işlemler gerçekleştirmeyin.
  • Hassas işlemlerde ek doğrulama gereksinimini değerlendirin.
  • Kaynak başlıklarını ek bir sinyal olarak kontrol edin.
  • Güvenlik testlerini ve kod incelemelerini düzenli olarak yapın.
CSRF saldırılarına karşı koruma, yalnızca belirli bir token eklemekten ibaret değildir. Güvenli HTTP tasarımı, doğru çerez ayarları, sunucu tarafı doğrulama ve hassas işlemlere uygun ek kontroller birlikte uygulandığında kullanıcı hesaplarının korunması güçlenir.
 

Benzer konular

💬Cevaplar
0
👁️‍🗨️Görüntüleme
58

Günün trendleri

Geri