asp.net – 如果启用ASP .Net请求验证,是否需要HtmlEncode Textbox值?

如果某个站点启用了ASP.NET请求验证,您是否还需要 HtmlEncode和 HtmlDecode字符串信息以及简单的表单(例如ASP文本框)?

解决方法

If ASP.NET Request Validation is enabled for a site,do you still need to HtmlEncode

ASP.NET请求验证是一个黑客,试图解决愚蠢的作者的破坏的程序.不要写破坏的程序.

您写入HTML页面的任何文本字符串必须是HTML编码的;这是一个正确的问题,而不仅仅是安全性(这是正确性的一个子集).即使请求验证可能会神奇地删除任何可能的XSS攻击(并不是这样的情况),否则HtmlEncode文本输出仍然会导致生成格式错误输出,破坏您的数据.说我正在做一个论坛,谈论一些变量a,b和c,并想说:

a<b b>c b>a

如果这被回覆到没有编码的HTML源代码,我会得到:

ac b>a

也许网页的其余部分也是大胆的.哎呦!

请求验证是假的,不应该依赖.认情况下,“推荐用于所有生产环境”是令人难过的,这使我非常怀疑ASP.NET团队的健全性.

如果你正确地编写了你的​​程序,你不需要它,它只会让你的方式. (例如,如果SO使用它,我将无法使这篇文章提到< script>标签.)如果您没有正确地编写程序,请求验证不会修复您的安全漏洞这只会使它们更加模糊不清.

and HtmlDecode string information

你通常不会在网络应用程序中使用HtmlDecode任何东西.编码将内容推送到HTML中,但是当内容从提交的表单中恢复时,它是纯文本,而不是HTML编码.

to and from simple forms (e.g. ASP TextBoxes)?

文本框应该很好设置它们的.Text确实做任何必要的编码,使您在文本框中显示的确切字符串.但.一些看起来像是HTML编码的东西实际上并不会.例如:

myTextBox.Text= "a<b b>c"; // Fine!
myLabel.Text= "a<b b>c"; // broken!

噢亲爱的.文字并不总是意味着文字. Sometimes,it actually means HTML.谢谢微软的方式,泥泞一个话题的水域太多人已经很难理解了.

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...