2011-05-10 24 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。