2011-05-10 56 views
0

HI所有新的,項目替換現有的文本框,在運行時在asp.net

我需要你的建議/上this.When我們開始這個項目的想法,客戶說,我們希望 接受Potentially Dangerous HTML Tags(like img,script,link etc...)到文本框,並且我們將文本框的值保存到數據庫中。

現在,客戶端要允許這些標籤,但要保存編碼形式的這些值(以避免XSS)

現在,我只是想知道,有沒有在asp.net任何方式,使我可以取代所有以最小的變化新SafeTextbox現有的文本框的行爲(我不想的HTMLEncode或HtmlDecode添加到每個文本框

例如

public class NewTextBox:TextBox 
{ 
    public override string Text 
    { 
     get { return HttpUtility.HtmlDecode(base.Text); } 
     set { base.Text = HttpUtility.HtmlEncode(value); } 
    } 

} 

在運行

ProjectTextBox replaces with NewTextBox 
+0

你打算使用JavaScript或類似jQuery的庫嗎?您可以輕鬆全局攔截帖子並在發佈之前對文本框字符串進行編碼。 – hunter 2011-05-10 18:18:39

+1

獵人,如果用戶禁用Javascript,該怎麼辦? – 2011-05-10 18:19:14

+0

@hunter:沒有Javascript – 2011-05-10 18:20:51

回答

1

你可以看看ASP.NET中的TagMapping。

http://msdn.microsoft.com/en-us/library/ms164641(v=vs.100).aspx

的tagMapping元素定義了在編譯時重新映射到其它類型的標籤的標籤類型的集合。這種重新映射會使配置文件範圍內的ASP.NET應用程序中的所有頁面和控件的原始標籤類型使用映射類型。

<pages> 
    <tagMapping> 
    <add tagType="System.Web.UI.WebControls.TextBox" 
      mappedTagType="Yournamespace.NewTextBox" 
    /> 
    </tagMapping> 

+0

非常感謝...正是我在找什麼... + 1 – 2011-05-10 18:49:05

1

您可以在頁面級別或從web.config所有頁面設置ValidateRequests爲true。