"Potentially dangerous Request.Form value..." Hatası için Çözümler

Eğer;
Server Error in '/' Application ... A potentially dangerous Request.Form value was detected...
hatası ile karşılaşıyorsanız bunun sebebi kullandığınız HTML bileşenlerinden yine html kodu girilmeye çalışılmasıdır. Bu gerçekten ciddi bir potansiyel tehlikedir. Çünkü html inputlar kullanılarak javascriplertler çalıştırılabilir. Böylece virüslü sitelere yönlendir,veritabanı kullanıyorsanuz Sql injection riskiyle karşı karşıya kalabilirsiniz.

Çoğunlukla bu hatayı almanıza ' (tırnak) işareti sebep olur. Bu hatayı engelleminin bir yöntemi tırnak işaretin html kodu eşitini yazmaktır. Bunun için metniniz içerisinde bulunan tırnak işaretlerini replace edebilirisiniz.

    txtTextBox1.Text=mystr.Replace("'","'");

Local makinanızda çalışıyorsanız veya güvenilir çalışanlardan oluşan bir intranette çalışıyorsanız size bir yöntem daha tavsiye edebilirim. Bu yöntemde sayfanın güvenlik kontrol yapmasını engelleyeceğiz. Bunun için Asp.Net sayfanızın "Page" direktifine :

    ValidateRequest="false"
Yazmanız yeterli olacaktır. Yani şu şekilde görünmelidir:
    <%@ Page Language="C#" AutoEventWireup="false" Codebehind="Form.aspx.cs" Inherits="Proje.Form" ValidateRequest="false"%>

Eğer kontrolü bütün sayfalarda kaldırmak istiyorsanız bunun için web.config dosyasına ufak bir ekleme yapmak yeterli olacaktır.
    <system.web>
        <Pages ValidateRequest="false" />
    </system.web>

Bu yöntemler dışında son bir tavsiyemde bütün input değerlerini htmldeki kod karşılıklarına çevirmektir. Örneğin < işaretini &lt;'ye çevirir. Bunun için aşağıdaki .NET fonksiyonu kullanılabilirsiniz:
    MyLabel.Text = HttpUtility.HtmlEncode(MyTextBox.Text);

Yorum(1)

mehmet

23 Nisan 2009 22:28

çok teşekkür ederim. sayende yeni bir durum öğrendim. ValidateRequest="false" seçenegi tam admin ekranları için. veritabanına html taglarını yazabiliyorum artık.

Yorum Gönder