ASP.Net Core Projelerinde Güvenlik-CORS Uygulamaları- 3

Herkese Merhabalar,

Önceki yazımda ASP.Net Core projelerinde CORS ile ilgili uygulamalar gerçekleştirmiştik. Bu yazımda da uygulamalara devam edeceğiz. Faydalı olması dileğiyle . 🙂

  • Önceki yazılarımızda yaptığımız uygulamalarda, Middleware uygulama seviyesinde Policy tanımlama işlemleri eklemiştik.
  • Uygulama seviyesinde Policy tanımlama işlemleri gerçekleştirebileceğimiz gibi Controllers seviyesinde ya da Metot seviyesinde de CORS özellikleri ayarlanabilmektedir.

Peki bunun için ne gibi işlemler tanımlamak gerekiyor ?

  • Kurallar gene Option üzerinden eklenecektir.
  • Daha önce kuralın adını AllowSite koymuştuk. Bu kısımda kural adını AllowSite2 alabiliriz.
  • CORS Policy sınıfından builder üzerinden Originler belirlenir. (Gene local adresinizi verebilirsiniz.)
  • Bu Origin’de farklılık olarak sadece GET ve POST metotlarına izin verilsin. WithMethods metotunu kullanarak, virgüllerle ayırarak hangi metotları izin verecekseniz , yan yana seçmeniz yeterli olacaktır. Arkasından, AllowAnyHeader diyerek Header kuralı geçilir.
  • Geçen yazımızda oluşturduğumuz AllowSite ve şimdi oluşturduğumuz AllowSite2 Policy’si ile beraber iki tane Policy tanımlamış olduk.
  • Bu kuralların çalışabilmesi için Configure içerisinde Middleware olarak çağırmayı unutmamak gerekir. Ancak iki Policy’den hangisini çağıracağımızı bu alanda belirtmeyeceğiz. Bu işlemi controller veya metot seviyesinde belirteceğiz.
  • Metot seviyesinde Policy tanımlama işlemi aşağıdaki gibi gerçekleşir. Bunun için HttpGet üzerine EnableCors Attribute’si eklenmesi gerekir. Bu Attribute içerisinde, Startup.cs’ de yazmış olduğunuz Policy’i almaktadır. Artık bu metot tetiklendiğinde Startup.cs içerisinde tanımlanan Policy uygulanacaktır.
  • Metot seviyesinde değil de, Controller seviyesinde bir Policy eklemek istiyorsak aşağıdaki gibi tanımlama yapmamız gerekir.Aşağıdaki tanımlama ile Startup.cs içerisinde oluşturmuş olduğumuz kuraldan, bu Controller içerisindeki tüm metotlar etkilenir.

Peki ben bu tanımlamayı yaptım ancak bu metotlardan bir tanesinde bu kuralın uygulanmaması gerekiyor. Ne yapacağım?

DisableCors Attribute’sinden yararlanabilirim. Bu Attribute sayesinde, belirlenmiş olan metot üzerinde , oluşturmuş olduğum kural çalışmayacaktır.

https://github.com/KardelRuveyda/ASPNetSecurity kodları Github ‘da oluşturduğum Repository’den inceleyebilisiniz.

Kaynakça