ASP.NET Core 'CSRF Token Mismatch' Hatası Nasıl Çözülür?

ASP.NET Core 'CSRF Token Mismatch' Hatası Nasıl Çözülür?

ASP.NET Core 'CSRF Token Mismatch' hatasının nasıl çözüleceğini anlatan bu blog yazısında, adım adım çözüm yöntemlerini keşfedecek, form gönderiminde güvenlik önlemlerini nasıl alabileceğinizi öğreneceksiniz.

Al_Yapay_Zeka

Geliştirici dünyasında, herkesin karşılaştığı bazı hatalar vardır. Bir gün yazılım geliştirdiğiniz bir projede, "CSRF Token Mismatch" hatasını alırsınız. Bu hata, özellikle güvenlik konusunda başınıza dert açabilir. Ama endişelenmeyin, çünkü bu yazıda size ASP.NET Core'da bu hatayı nasıl çözebileceğinizi adım adım anlatacağım.

CSRF Nedir?


CSRF (Cross-Site Request Forgery), kötü niyetli kişilerin bir kullanıcının kimlik bilgilerini kullanarak kötü amaçlı isteklerde bulunmalarını sağlayan bir saldırıdır. Web uygulamanızda kullanıcıların güvenliğini sağlamak için, CSRF koruması devreye girer. Bu, her form gönderimi için özel bir token (anahtar) kullanarak doğrulama yapmanızı sağlar.

Bu hatayla karşılaştığınızda, uygulamanızın güvenliği için kritik bir adımı atlamış olabilirsiniz. Şimdi gelin, bu hatayı nasıl düzeltebileceğinizi keşfedelim.

CSRF Token Mismatch Hatası Nedir?


“CSRF Token Mismatch” hatası, genellikle form gönderimi sırasında gerçekleşir. Form verilerinizin, gönderim sırasında beklenen token ile uyuşmadığı durumlarda ortaya çıkar. Bu, genellikle CSRF token’ının eksik olması veya yanlış bir şekilde gönderilmesi durumunda meydana gelir.

CSRF Hatasını Çözmek İçin Adımlar


İlk adımda, ASP.NET Core’daki CSRF korumasını anlamak oldukça önemlidir. Eğer bir form göndermeyi planlıyorsanız, bu token'ı doğru şekilde kullanmanız gerekir. İşte hatayı çözmek için izlemeniz gereken adımlar:

1. CSRF Token’ını Formda Doğru Kullanın
Formlarınızda CSRF token’ını kullandığınızdan emin olun. ASP.NET Core, her form için bir token oluşturur. Eğer formunuzda bu token’ı kullanmazsanız, “CSRF Token Mismatch” hatası alırsınız. İşte doğru kullanım örneği:


@Html.AntiForgeryToken()


Bu kod parçası, ASP.NET Core’daki `@Html.AntiForgeryToken()` yardımcı fonksiyonunu kullanarak CSRF token’ını formunuza dahil eder. Eğer bu satır eksikse, gönderilen formun doğrulaması başarısız olur ve hata alırsınız.

2. CSRF Middleware'ini Kontrol Edin
ASP.NET Core uygulamanızda CSRF korumasının etkinleştirildiğinden emin olmalısınız. Bunun için `ConfigureServices` metodunda `AddAntiforgery` metodunun çağrıldığından emin olun:


public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews().AddRazorRuntimeCompilation();
    services.AddAntiforgery(options => 
    {
        options.HeaderName = "X-CSRF-TOKEN";
    });
}


Bu, CSRF token’ını belirli başlıklarda göndermenizi sağlar ve güvenlik seviyesini arttırır.

3. Header ile CSRF Token Gönderin
Bir başka yaygın sorun, JavaScript kullanarak AJAX istekleri gönderirken CSRF token'ının başlıkla birlikte gönderilmemesidir. Bu durumda, JavaScript tarafında token'ı almak ve başlık olarak göndermek gerekecektir. İşte nasıl yapılacağı:


// JavaScript kodu
$.ajax({
    type: 'POST',
    url: '/api/someendpoint',
    data: formData,
    beforeSend: function (xhr) {
        var token = $('input[name="__RequestVerificationToken"]').val();
        xhr.setRequestHeader('X-CSRF-TOKEN', token);
    },
    success: function (response) {
        // Başarılı işlem
    }
});


Burada, token her AJAX isteği ile birlikte doğru başlık altında gönderiliyor.

4. Tarayıcı Önbelleğini Temizleyin
Bazen CSRF hatasının nedeni tarayıcı önbelleği olabilir. Tarayıcıda eski token’lar veya hatalı bir doğrulama olabilir. Bu durumu engellemek için tarayıcı önbelleğini temizlemeyi deneyin veya token doğrulama sürecini sıfırlayın.

5. Token’ın Süresinin Dolmadığından Emin Olun
Token’lar genellikle belirli bir süre için geçerlidir. Süresi dolmuş bir token ile istek yapıldığında, bu hata alınabilir. Süresi dolmuş token'ları kontrol edin ve gerekirse token sürelerini uzatın.

Sonuç


CSRF Token Mismatch hatası, genellikle basit bir konfigürasyon hatasından kaynaklanır, ancak doğru şekilde ele alındığında kolayca çözülebilir. Yukarıdaki adımları izleyerek bu hatayı düzeltebilir ve web uygulamanızın güvenliğini artırabilirsiniz. Unutmayın, güvenlik, yazılım geliştirmede her zaman öncelikli olmalıdır.

İlgili Yazılar

Benzer konularda diğer yazılarımız

Karmaşık Web Projelerinde Mikroservis Mimarisi ile PHP-FPM Entegrasyonu: Performans ve Ölçeklenebilirlik İpuçları

Web geliştirme dünyası, her geçen gün daha karmaşık hale geliyor. Geliştiriciler, performans, güvenlik ve ölçeklenebilirlik gibi unsurları dengelerken, projeleri hızla büyütmek zorunda kalıyor. Bu noktada, **mikroservis mimarisi** ve **PHP-FPM** entegrasyonu,...

C# "Object Reference Not Set to an Instance of an Object" Hatası: Sebepleri ve Çözüm Yöntemleri

C#'ta "Object Reference Not Set to an Instance of an Object" Hatası ile Karşılaştınız mı?Bir sabah, kodunuzu çalıştırırken aniden çıkan o korkutucu hata mesajını gördünüz mü? Ekranda beliren "Object Reference Not Set to an Instance of an Object" hatası,...

Uncaught SyntaxError: JavaScript'teki En Can Sıkıcı Hata ve Nasıl Çözülür?

Bir sabah, kahvemi alıp bilgisayarımın başına geçtiğimde, bugün yeni bir projeye başlamayı planlıyordum. Heyecanlıydım! Kodları yazmaya başladım, her şey yolunda gidiyordu. Fakat birden, tarayıcıda karşıma çıkan hata mesajını görünce gözlerim büyüdü:...

Web Sitesi Hızınızı Artırmak İçin 10 Sürpriz Yöntem: Caching, CDN ve Daha Fazlası

Web Hızı ve SEO İlişkisi: Neden Hızlı Bir Siteye Sahip Olmak Zorunlu?Bir web sitesinin hızının SEO üzerindeki etkisini düşünmek için basit bir örnek verelim: Siteniz ne kadar hızlıysa, ziyaretçileriniz o kadar fazla ve uzun süre orada kalır. Yavaş yüklenen...

Farklı Tarayıcıların CSS'yi Nasıl 'Yorumladığını' Anlamak ve Web Tasarımında Karşılaşılan İlginç Sorunlar

Web tasarımına yeni adım atan bir geliştiriciyseniz, muhtemelen ilk günlerinizde karşılaştığınız bir sorun olmuştur: **"Kodumu doğru yazıyorum ama tarayıcıda farklı görünüyor!"** Herkesin PC'si ve akıllı telefonları farklı ekran boyutlarına, çözünürlüklere...

JavaScript’te Asenkron Programlamanın 2025'teki Yeni Yöntemleri: Async/Await ve Beyond

2025’e adım atarken JavaScript dünyasında heyecan verici yenilikler bizi bekliyor. Web geliştiricileri olarak, günümüzde uygulamalarda asenkron işlemleri yönetmek, her geçen yıl daha da önem kazanıyor. Bu yazımda, JavaScript’te asenkron programlamanın...