İlk etapda anlam veremedim fakat bir kaç denemeden sonra razor viewengine içerisinde yazmış olduğum zararlı kodların otomatik olarak encode edildiğini farkettim.
Ben herhangi bir encode ya da filtreleme yapmadığım halde razor kendisi html kısımda gerekli encode işlemini yapıyor. Ve normal encode işlemlerinde olduğu gibi de sayfa içinde encode edilmiş verinin html halini yansıtıyor.
Fakat burada dikkatimi çeken şöyle bir durum var. Ben zararlı kodları Controller içerisinde manuel yazarak değişkene atadığım durum ile sayfa içerisinde bir textbox'dan Controller içine gönderip sonra view sayfasına gönderme arasında bir var.
Bu fark şöyle:
Şimdi eğer ben controller içerisinde manuel olarak zararlı kodu yazıp view içerisinde bunu gösterirsem razor kendisi bunu encode ediyor ve sayfa içinde html halini gösteriyor. Eğer ben bu zararlı kodu Html.Raw içerisinde gösterirsem ilgili zararlı kod çalışıyor.
Ama ben zararlı kodu manuel olarak değilde bir textbox içerisinden alıp Controller'da bunu bir değişkene eşitleyip sonrasında view içinde gösterirsem aynen manuel yazma durumunda olduğu gibi zararlı kodları encode ediyor ve sayfa içinde bu encode edilmiş kodların
html halini gösteriyor. Fakat bu textboxdan dinamik olarak aldığım bu zararlı kodları Html.Raw ile göstermek istediğimde sayfanın kaynak kodunda bunu olduğu gibi yazıyor ama sayfa içerisinde yansıtırken boş olarak gösteriyor ve zararlı kod çaışmıyor.Birinci
sorum bu durumun sebebi nedir?
İkinci sorum: Şimdi ben projemde AntiXssLibrary kullanmayı düşünüyordum. Acaba Razorun bu encode ile gerçekleştirdiği default koruma beni bütün xss tabanlı saldırılardan korur mu? Eğer korursa AntiXssLibrary kullanmanın bir anlamı var mı?
Son olarak ben AntiXssLibrary ile Microsoft.Security.Application.AntiXss.HtmlEncode() metodunu kullandığım zaman Visual Studio bana bu yöntemin önerilmediğini ve Microsoft.Security.Application.Encoder.HtmlEncode() metodunu kullanmamın gerektiğine dair
uyarı şeklinde hatırlatma yapıyor. AntiXssLibrary'yi tavsiye etmeyişinin sebebi ne olabilir.
face your fears live your dreams