我有一个表单中的文本框,需要接受带有HTML标记的输入.
使用HTML标签提交输入会使应用程序抛出HttpRequestValidationException
,除非我们使用HttpUtility.HtmlEncode
.容易到目前为止.
但是,输入也可能包含符号,例如"度"符号(°).当这些也是HTML编码时,在这个例子中它们变成数字转义码°
.这些代码也会导致HttpRequestValidationException
抛出,但问题是为什么?
我不明白为什么数字转义码被认为是潜在的危险,特别是°
作为输入工作就好了.
我似乎被卡住了,因为由于标签而导致输入失败,并且由于数字转义而导致输入的HTML编码失败.到目前为止我的解决方案是HTML编码,然后正则表达式用它们的HTML解码形式替换转义序列,但我不确定这是否是一个安全的解决方案,因为我认为转义序列被视为危险的原因.
ASP.NET认为html char escapes(xx)是危险的,因为它认为角度括号危险即XSS.使用上面的转义,您可以包含任何字符(例如,有角度的括号).以下是1.1和2.0中请求验证的概要.
在您的案件等合法案件中,您可以选择以下任何一种情况
根据您的描述选择您自己的处理方式
在页面级别禁用请求验证(<%@ Page validateRequest ="false")
在.NET 4中,使用RequestValidator类替换您自己的请求验证.