ASP.Net Core Projelerinde Güvenlik- Cross-Site Request Forgery(CRSF) Uygulama
Önceki yazımda ASP.Net Core projelerinde Cross-Site Request Forgery(CRSF) konusu ile ilgili bilgi vermiştim. Bu yazımda ise Cross-Site Request Forgery(CRSF) konusunla ilgili uygulamalar gerçekleştireceğiz. Faydalı olması dileğiyle . 🙂

ASP .NET Core siteler arası bilgi hırsızlığına karşı bazı önlemler almaktadır.
Haydi Bu önlemlerden bahsedelim!
- Form alanını olduğu her alanda bildiğiniz üzere Cross-Site Request Forgery, yani siteler arası istek hırsızlığı gerçekleşebilir.
- ASP.NET Core yapısı bu alanda Form Tag’ının içerisindeki input taginde RequestVericationToken adında bir token kullanmıştır. Form Tag’ı browserda oluşurken bu Form Tag’ı içerisindeki input alanı hidden olarak oluşuyor.
- Bu Token’ın aynısından Application kısmında da oluşturulmaktadır.

- Application içerisinden gelen token yani cookie değeri ile formdan gelen token ASP.Net Core tarafından karşılaştırılır.
- Eğer bu iki alan aynı ise bu isteğe olumlu karşılık verilir aksi takdirde reddedilir.

- Bunun sayesinde siteler arası hırsızlığın önüne geçilmiş olur.
- ASP .NET Core ile geliştirme yapıyorsanız ek bir önlem almanıza gerek yok, siteler arası hırsızlığı önleyebilmek için sadece attribute eklemeniz yeterli olacaktır.
- Tek yapılması gereken, hangi metotta siteler arası istek hırsızlığı engellenmek istiyorsa “ValidateAntiForgeryToken” attributesini kullanmaktır.
- Form tarafında kayıt işlemi gerçekleşip, request düştüğü zaman Application’daki Cookie bilgisi ile ile inputtaki token bilgisi karşılaştırılacak. İkisi farklı ise ve onay alınmıyorsa o zaman yönlendirme yapılmayacaktır.
Peki ValidateAntiForgeryToken attribute’sini her post işleminde eklemek yerine tüm metotlarda olmasını istersem ne yapmam gerekir ?
- Startup.cs içerisinde ConfigureServices metodu içerisine gelinir. Aşağıdaki gibi bir kod parçası eklenir. Bu alan eklendiğinde artık siteler arası hırsızlığa karşı , metot bazında değil uygulama bazında bir koruma sağlanır.

- Uygulama bazında Startup.cs’de bu alanı eklediniz. Ancak bir metotta siteler arası hırsızlığa karşı önlem aldığınız bu metodun çalışmasını istemiyorsunuz. O zaman da IgnoreAntiforgeryToken Attribute’sini eklemeniz kafi olacaktır.
https://github.com/KardelRuveyda/ASPNetSecurity kodları Github ‘da oluşturduğum Repository’den inceleyebilisiniz.
Kaynakça
- https://www.udemy.com/course/aspnet-core-security/ ( Fatih Çakıroğlu- ASPNET Core Security)