ASP.Net Core Projelerinde Güvenlik- HTMLEncoder/JavascriptEncode/UrlEncoder Kavramları

Önceki yazımda ASP.Net Core projelerinde Cross-site scripting attacks (XSS) çeşiti olan Stored XSS konusu hakkında bilgi vermiştik. Bu yazımda ise HTMLEncoder/JavascriptEncode/UrlEncoder kavramlarından bahsedeceğim. Faydalı olması dileğiyle . :)

  • Şu ana kadar öğrendiğimiz ve bahsettiğimiz Reflected ve Stored XSS yazılarında , .cshtml tarafında Razor ile “@” directory kullandığımızda bizim için otomatik olarak encode ediyordu.
  • .cshtml tarafında değil de, Controller tarafında da datalar encode edilebilir.
  • Bu aşamada .NET Core içerisinde default olarak gömülü şekilde gelen encoderlar devreye girer.

HTMLEncoder : HTML kodlarını encode etmek için kullanılır.
JavascriptEncoder : Javascript kodlarını zararsız hale dönüştürmek için encode etme işlemi gerçekleşir.
URLEncoder: URL data taşındığı zaman, kötü niyetli kullanıcıların farklı datalar girmesini engellemek için ve datayı zararsız hale getirmek için kullanılır.

  • HTMLEncoder,JavascriptEncoder ve URLEncoder Dependency Injection yöntemi ile koda entegre edilebilir.
  • System.Text.Encodings.Web kütüphanesi kullanılarak Controller içerisine Encoderlar eklenebilir.
  • Aşağıdaki gibi encoderlar tanımlandı. Ve Dependency Injection yöntemi ile projeye entegre edildi.
  • Kullanıcıdan gelen name aşağıdaki metotta querystring olarak verilecektir. O nedenle bu kısımda URLEncoder kullanabiliriz.
  • _urlEncoder kullanıldıktan sonra Encode metodu ile şifrelemeyi gerçekleştirilir. Bu kısıma Name parametresi verildiğinde, artık URL için zararsız hale getirilmiş olacaktır.

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

Kaynakça

Software Specialist— @DogusTechnology

Software Specialist— @DogusTechnology