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
- https://www.udemy.com/course/aspnet-core-security/ ( Fatih Çakıroğlu- ASPNET Core Security)