ASP.NET Core CSRF Token Expired Hatası ve Çözümü

ASP.NET Core CSRF Token Expired Hatası ve Çözümü

Bu blog yazısında, ASP.NET Core'da karşılaşılan "CSRF Token Expired" hatasının nedenleri ve nasıl çözüleceği anlatılmaktadır. Çözüm adımları, CSRF koruması, form yapılandırmaları ve token sürelerinin nasıl ayarlanacağı üzerine detaylı bilgiler sunulmaktad

Al_Yapay_Zeka

Giriş: CSRF Token Hatası Nedir ve Neden Oluşur?



Bir gün ASP.NET Core projenizde bir hata ile karşılaştınız. Kullanıcı formunu göndermeye çalışırken, "CSRF Token Expired" hatasıyla karşılaştınız. Hemen kafanızda bir sürü soru işareti beliriyor, değil mi? “Bu token nedir, neden süresi dolmuş?” diye düşünüyorsunuz. Endişelenmeyin, yalnız değilsiniz. Bu yazıda, bu hatayı çözmenize yardımcı olacak adım adım bir rehber hazırladım.

CSRF (Cross-Site Request Forgery), web uygulamalarını hedef alan bir saldırı türüdür. Bu saldırının amacı, kullanıcının izni olmadan zararlı isteklerin gönderilmesidir. ASP.NET Core, bu tür saldırılara karşı korunmak için Token kullanır. Ancak, bazen bu token süresi dolduğunda "CSRF Token Expired" hatası alabilirsiniz.

CSRF Token Expired Hatasının Sebepleri



CSRF token’ları, her bir istek için benzersiz ve geçici bir anahtar görevi görür. Süresi dolan token’lar genellikle aşağıdaki nedenlerden ötürü oluşur:

1. Uzun Süreli Oturumlar: Kullanıcı çok uzun süre işlem yapmadığında, oturumun süresi dolar ve token geçersiz hale gelir.
2. Tarayıcı Çerezleri: Tarayıcıda çerezler silindiğinde veya çerezler tarayıcı tarafından engellendiğinde token kaybolur.
3. Yanlış Konfigürasyonlar: CSRF token’larının doğru şekilde yapılandırılmamış olması da bu hatayı tetikleyebilir.

Adım Adım Çözüm Yöntemleri



1. CSRF Token’ın Doğru Yapılandırıldığından Emin Olun

İlk olarak, CSRF korumasının doğru bir şekilde yapılandırıldığından emin olmanız gerekiyor. ASP.NET Core’da CSRF korumasını etkinleştirmek için `services.AddAntiforgery()` kullanılır.

Aşağıdaki gibi `Startup.cs` dosyanızda bu konfigürasyonu doğru şekilde yaptığınızdan emin olun:


public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();
    services.AddAntiforgery(options => 
    {
        options.HeaderName = "X-XSRF-TOKEN"; // CSRF token başlık adı
    });
}


2. Formlarda CSRF Token'ını Dahil Edin

Formlarınızı gönderdiğinizde, CSRF token’ının doğru şekilde formun içine eklendiğinden emin olmalısınız. Bu token, her POST isteğiyle birlikte gönderilmelidir. Aşağıdaki gibi `@Html.AntiForgeryToken()` kullanarak formunuza token ekleyebilirsiniz:


@Html.AntiForgeryToken()


Bu, her form gönderisi ile birlikte token’ın doğruluğunu kontrol etmenizi sağlar.

3. Token Süresi Ayarlarını Yapılandırın

Eğer kullanıcılarınızın uzun süre işlem yapmasını istiyorsanız, token sürelerini uzatmayı düşünebilirsiniz. Bu, token’ın süresinin dolmasını engelleyebilir. Token süresi, aşağıdaki gibi `options` parametreleriyle ayarlanabilir:


public void ConfigureServices(IServiceCollection services)
{
    services.AddAntiforgery(options => 
    {
        options.Lifetime = TimeSpan.FromMinutes(60); // Token’ın geçerlilik süresi
    });
}


Böylece, token’larınız belirlediğiniz süre kadar geçerli olacak.

4. Tarayıcı Çerezlerini Kontrol Edin

Bazı durumlarda, tarayıcı çerezleri token’ların doğru şekilde iletilmemesine neden olabilir. Eğer token çerezlerle gönderiliyorsa, çerezlerin doğru şekilde ayarlandığından emin olun. Çerezler, `SameSite` özelliği ile birlikte gönderilmelidir. Bu özellik, token’ların yalnızca doğru kaynağa (aynı siteye) gönderilmesini sağlar.


services.Configure(options =>
{
    options.MinimumSameSitePolicy = SameSiteMode.Strict;
});


5. CSRF Token’ın Kontrolünü Yapın

Son olarak, token’ın doğru bir şekilde doğrulandığını kontrol edin. ASP.NET Core’da, `[ValidateAntiForgeryToken]` özniteliği ile form gönderilerini doğrulayabilirsiniz. Bu, CSRF token’ının doğru olup olmadığını kontrol eder.


[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult SubmitForm(MyModel model)
{
    // Form işleme kodlarınız
    return View();
}


Bu, token’ın süresinin dolup dolmadığını kontrol etmek için temel bir adımdır.

Sonuç



“CSRF Token Expired” hatası, genellikle güvenlik nedeniyle karşınıza çıkan bir engel gibi görünse de, doğru yapılandırma ile kolayca çözebilirsiniz. Token’larınızın geçerlilik süresini uzatarak, formlarınıza token ekleyerek ve doğru konfigürasyonu yaparak bu sorunu ortadan kaldırabilirsiniz.

Umarım bu rehber, karşılaştığınız hatayı çözmenize yardımcı olmuştur. Unutmayın, CSRF token’ları güvenliğinizi artırmak için kritik öneme sahiptir. Onlara dikkat ederek uygulamanızı güvenli tutabilirsiniz.

İlgili Yazılar

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

Laravel API Geliştirme: Adım Adım Rehber

Bir gün, bir proje yöneticisi olan Emre, işyerindeki tüm veri akışını bir web uygulaması üzerinden yönetmeye karar verdi. Ancak Emre'nin düşündüğü gibi, bu işlem sadece bir kullanıcı arayüzü ile bitmeyecekti. Kullanıcıların verileri verimli bir şekilde...

Yapay Zeka ile Web Sitesi Tasarımı: İnsan ve Makine Arasındaki Sınırları Zorlarken Dikkat Edilmesi Gereken 7 Kritik Faktör

Web tasarımı, zamanla değişen ve evrilen bir alan. Ancak son yıllarda, yapay zeka (YZ) ve makine öğrenimi gibi ileri teknolojiler, bu alanın şekil almasını hızlandırdı. Yavaşça her geçen gün tasarım süreçlerine entegre edilen yapay zeka, tasarımcıların...

React ve Redux: Global State Yönetiminde Hangi Durumlar İçin UseContext Kullanmalı, Hangi Durumlar İçin Redux?

React, web uygulamalarının ön yüzlerini geliştirirken en çok tercih edilen kütüphanelerden birisi haline geldi. Ancak React ile çalışırken, verilerin nasıl yönetileceği konusu bazen karmaşık bir hal alabiliyor. Özellikle büyük projelerde, global state...

Web Sitesi Performansınızı Hızlandırmak İçin 2025'te Denemeniz Gereken 10 Yeni Yöntem

** İnternette gezinti, hızla ve akıcı bir deneyim sunan sitelerle daha keyifli hale gelir. 2025 yılı, web geliştiriciler ve dijital pazarlama profesyonelleri için hız optimizasyonunun öneminin her geçen yıl arttığı bir dönem olacak. Ancak hız, sadece...

Web Sitesi Performansını Artırmanın 5 Yaratıcı Yolu: Hız, Güvenlik ve Kullanıcı Deneyimi İçin İpuçları

Web sitesi sahibi olmak, sadece estetik bir site tasarlamaktan çok daha fazlasını gerektiriyor. Bugünün dijital dünyasında, web sitesi performansı sadece kullanıcılar için değil, aynı zamanda SEO sıralamaları için de kritik öneme sahip. Peki, bir web...

JavaScript'te Asenkron Programlama: Callback, Promise ve Async/Await'in Derinlemesine Karşılaştırması ve Kullanım Senaryoları

JavaScript, günümüzde web geliştirme dünyasında en popüler ve güçlü dillerden biri haline geldi. Ancak JavaScript'in gelişimiyle birlikte bazı zorluklar da ortaya çıktı. Bu zorluklardan biri, özellikle **asenkron programlama**. Asenkron kod yazarken doğru...