İstemcide zararlı olab...

ASP.NET ile yazılım geliştiren yazılımcılar form alanlarından gelebilecek zararlı kodlara karşı otomatik koruma özelliğine sahiptirler. Yap...

İstemcide zararlı olabilecek bir değer Request.Form algılandı.

İstemcide zararlı olabilecek bir değer Request.Form algılandı.

ASP.NET ile yazılım geliştiren yazılımcılar form alanlarından gelebilecek zararlı kodlara karşı otomatik koruma özelliğine sahiptirler. Yapılabilecek XSS (Cross site script) saldırılarını önlemek yapılan tüm istekler bir geçerlilik kontrolü (validation) işleminden geçer. Bu işlemde temel olarak script bloklarını başlatan ve bitiren taglerde yer alan < ve > işaretleri aranır. Bulunduğu zaman da "System.Web.HttpRequestValidationException" oluşturulur.

Bir çok forumda bu hatayı göz ardı etmek için <%@ Page Language="C#" etiketinden sonra  ValidateRequest ="false" satırının eklenmesi gerektiği söyleniyor ancak .Net 4.0 kullanıyorsanız işe yaramaz! .Net 4.0 kullananlar için, projenizden Solution Explorer penceresinden Web.config dosyasını açın ve <system.web> etiketinin arasına bu satırı ekleyin.

     <httpRuntime requestValidationMode="2.0"/>

Asp.Net MVC de ise bu sorunu geçiştirmek için sayfa seviyesinde ya da uygulama seviyesinde (ki bu hiç mi hiç tavsiye edilmez.) Geçerlilik kontrolünü kapatabilirsiniz. Bu durumda dış kaynaklardan gelen tüm girdileri zararlı olabilecek metinlere, karakterlere karşı kontrol etmeniz ve filtrelemeniz gerekmektedir.

MVC 1.0 ile gelen ValidationInput özelliği sayesinde controller class tanımımız ya da herhangi bir controller action metod tanımımız için "istek geçerlilik kontrolü"nü devre dışı bırakabiliyoruz.

Şöyle ki: 

[ValidateInput(false)]

Bu öznitelik (attribute) sayesinde konulduğu yere göre ilgili controller sınıfının tüm metodları ya da sadece belirli action metodları için bu özellik iptal edilebilmekte.

sınıf Seviyesinde kullanım 

[ValidateInput(false)]

public class PageController : Controller

{

}

 Controller Action seviyesinde kullanım 

[HttpPost]

[ValidateInput(false)]

public ActionResult SavePage(PageViewModel pageViewModel)

{

       return View("IndexDetail");

}

Böylece ilgili sayfalarda HTML kod kabul eden editör vb. kontroller kullanabiliyoruz. Tabi tekrar hatırlatalım. Bu durumda gelen içeriğin güvenli olup olmadığının denetlenmesi ya da filtrelenmesi yazılımcı tarafından gerçekleştirilmek zorunda...


 

Hayrullah Güven

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper.

5 Yorum

Ali  19.11.2014 Yanıtla

Teşekkürler, sorunumu çözdü. Hem  webconfig'e  <httpRuntime requestValidationMode="2.0"/> hem de controller içinde actionun üstüne [ValidateInput(false)] eklemek gerekiyormuş...

Eşref Atak  27.02.2015 Yanıtla

Merhaba Güvensoft, Bu işlem Unigate ListItem post'larında aktive edilmedi sanırım? inputbox alanlarına <br/> girilince komple hata veriyor listitem??

Hayrullah  27.02.2015 Yanıtla

Merhaba Eşref bey :); Unigate DÖnüşüm Platformu için uygulanmamış olabilir. Bunu da gündeme alalım hemen hallederiz. :)

Hayrullah  27.02.2015 Yanıtla

Eşref bey bu arada Unigate Dönüşüm Platformu sitesi http://www.unigate.com.tr/ adresi yüklenmiyor. Bilginiz olsun.

Muhammed  09.04.2016 Yanıtla

Teşekkürler hocam

Yorum Yaz