13 Mayıs 2012 Pazar

Server response error : 'A potentially dangerous Request.Form value was detected from the client'

   TextBox kontrollerinin içerisinde güvenlik gerekçesiyle olsa gerek html kodları eklenmesi hataya neden olabiliyor. Ben bu hatayı kullandığım formda asyncFileUpload kontrollüyle resim yüklerken aldım. Formda aynı zamanda bir textboxa ilişkilendirilmiş htmlTextEditor de kullanmıştım. asyncFileUpload olmadan güncelleme veya ekleme işlemlerinde sorun olmuyordu. Muhtemelen htmlTextEditor html kodlarını dönüştürüyordu. Fakat asynFileUpload ile dosya yüklerken başlıktaki hata mesajı ile karşılaştım. 

   İnternette yaptığım ufak bir araştırmanın ardından çözüm yolunu buldum. web.config dosyanıza validateRequest="false" ve <httpRuntime requestValidationMode="2.0" /> kodlarını ekleyin. Bu kodları system.web alanı içerisine eklemeniz gerekiyor. Sayfanızın başına ValidateRequest="false" ifadesini eklerek de sayfanızdaki kontrol denetimini devre dışı bırakabilirsiniz. TextBox içerisine yazılan scriptler bu ifadeyi false yaparsanız çalıştırılacaktır. Örneğin sayfanızdaki herhangi bir textBox içerisine <script>alert("hello!")</script> ifadesini yazıp bir butona basıncı bu ifadeyi bir label text özelliğine aktarmaya kalkarsanız script çalışır. Yukarıdaki ifadeleri eklememiş olsaydınız konunun başlığındaki hata ifadesi ile karşılaşacaktınız.

   Güvenlik açısından eğer sayfanızda kontrol denetimlerini devre dışı bırakmışsanız Server.HtmlEncode(TextBox1.Text) şeklinde işlemlerinizi yaparsanız kutunuzun içerisindeki script ifadeleri normal bir stringe dönüştürülecektir. Böylece de script ataklarını önlemiş olursunuz.