asp.net – MvcHtmlString.ToHtmlString()不编码HTML?

前端之家收集整理的这篇文章主要介绍了asp.net – MvcHtmlString.ToHtmlString()不编码HTML?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
与此 question相关,我在ASP.NET MVC项目中使用XSS问题,并且与MvcHtmlSTring.ToHtmlString()方法混淆.从 documentation“返回一个代表当前对象的HTML编码字符串.”,但它在我的情况下不起作用:
var mvcHtmlString = MvcHtmlString.Create("<SCRIPT/XSS SRC=\"htpp://ha.ckers.org/css.js\">").ToHtmlString();

    var encoded = HttpUtility.HtmlEncode("<SCRIPT/XSS SRC=\"htpp://ha.ckers.org/css.js\">");

输出mvcHtmlString

<SCRIPT/XSS SRC="htpp://ha.ckers.org/css.js">

输出编码< - 这是我怀疑的行为!

&lt;SCRIPT/XSS SRC=&quot;htpp://ha.ckers.org/css.js&quot;&gt;

我错过了什么?

解决方法

MvcHtmlString(或 HtmlString,或实现 IHtmlString的任何内容)用于字符串,应该逐字地发出HTML – 即通过使它成为MvcHtmlString,你告诉它你真的想要那些HTML标签.

不同之处在于使用<%:..%>将字符串发送到ASP.NET页面时(ASP.NET 4或更高版本中的新增功能).在这种情况下,ASP.NET引擎将为您自动HtmlEncode常规字符串(或任何不实现IHtmlString的字符串),而MvcHtmlString将以逐字/未编码的形式发送到页面中.

即我认为文件错误的.有一个connect ticket在HtmlString构造函数文档中有相同的错误,他们确实修复了它. (我以为我提出了这样的说法: – /或许我的关闭是别人的副本?)我没有注意到MvcHtmlString文档也是错误的.

猜你在找的asp.Net相关文章