ASP.Net Core Projelerinde Güvenlik — IP Kontrol İşlemleri 2

Merhabalar 🙂

Bu yazımda WhiteList/Blacklist IP Control konusu ile ilgili toplamış olduğum bilgileri sizlerle paylaşmaya devam edeceğim.Önceki yazımızda uygulama bazlı IP kontrolü yapmıştık. Bu yazıda ise Controller/Method bazlı kontrol gerçekleştireceğiz. Faydalı olması dileğiyle 🙂

  • Controller/Method seviyesi için Filters adında bir klasör eklemeniz gerekir.
  • Bu filter içerisinde gene bir class oluşturmanız gerekir. CheckWhiteList adında bir class oluşturabilirsiniz.
  • Bu bir filter olacağından dolayı ActionFilterAttribute classından inherite olmalıdır.
  • MVC ve Core’da filterlar sayesinde bir controller içerisindeki herhangi bir metota istek gelmeden önce veya geldikten sonra bu istekleri yakalayabiliriz.
  • O nedenle oluşturduğumuz CheckWhiteList classı içerisinde OnActionExecuting metodunu override etmek gerekir. Ek olarak gene bir IpList’e de ihtiyaç duyulmaktadır.
  • O nedenle Constructor kullanarak Dependecy Injection yardımıyla aşağıdaki işlemler gerçekleştirilmelidir.
  • OnActionExecuting içerisinde gene istek olarak gelen IP adresi alınmalıdır.
  • Sonrasında hangi IP adreslerine izin verdiğimizin listesi gene isWhiteList değişkeninde tutulmuştur. Any() kullanılarak da geri dönüşün true ya da false olması sağlanmıştır.
  • İstek yapıldığında gelen IP adresi ile oluşturduğumuz WhiteList içerisinde tanımlanan IP adresi eş mi değil mi kontrolü yapılır.
  • Eğer IP adresi WhiteList içerisinde tanımlı değilse Result sonucu için StatusCodeResult kullanılmaktadır. Eğer tanımlı değilse , HttpStatusCode enum kullanılarak forbidden hatası verilir.
  • Bu yapılan işlemin servis filter olarak Startup’a eklenmesi gerekir. ConnfigureServices içerisine eklenen Services.Addscoped() her bir requestte AddScoped içerisinde belirtilmiş olan generic olan sınıftan nesne örneğini alır ve Dependency Injection kısımlarını otomatik olarak kendisi ekler.
  • Bu ekleme yapıldıktan sonra Controller üzerinde aşağıdaki tanımlamayı yapmanız yeterli olacaktır. Böyleca bu Action’a ulaşılmaya çalışıldığında eğer WhiteList içerisinde tanımlanan Ip dışında bir Ip istek gönderirse, 403 Forbidden hatası verilecektir.

Bir sonraki yazımda görüşmek üzere 🙂

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

Kaynakça