Rob*_*sig 7 asp.net xss asp.net-mvc
与此问题相关,我在ASP.NET MVC项目中使用XSS问题,并且与MvcHtmlSTring.ToHtmlString()方法混淆.从文档 "返回表示当前对象的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\">");
Run Code Online (Sandbox Code Playgroud)
输出mvcHtmlString
<SCRIPT/XSS SRC="htpp://ha.ckers.org/css.js">
Run Code Online (Sandbox Code Playgroud)
输出编码< - 这是我怀疑的行为!
<SCRIPT/XSS SRC="htpp://ha.ckers.org/css.js">
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
Rup*_*Rup 10
MvcHtmlString(或HtmlString,或实现IHtmlString的任何东西)用于应该逐字发送的字符串 - 即通过将其设为MvcHtmlString,您告诉它您确实需要这些HTML标记.
不同之处在于使用<%: .. %>(ASP.NET 4或更高版本中的新增功能)将字符串发送到ASP.NET页面时.在这种情况下,ASP.NET引擎将为您自动HtmlEncode常规字符串(或任何不实现IHtmlString的字符串),而MvcHtmlString将以逐字/未编码的形式发送到页面中.
即我认为文件是错误的.在HtmlString构造函数文档中有一个带有等效错误的连接票证,他们确实修复了它.(我以为我提交了这个: - /或许我的关闭是别人的副本?)我没注意到MvcHtmlString文档也是错误的.
MSDN文档是正确的,但可能有点令人困惑.该MvcHtmlString和IHtmlString接口被用于表示有一个字符串已被HTML编码.MSDN说:
返回表示当前对象的HTML编码字符串.
您传递到对象MvcHtmlString对象已经HTML编码,这样既.ToString()和.ToHtmlString()只返回你传递的对象.
请注意,MSDN文档明确指出:
ToHtmlString和ToString方法返回相同的值.
那么为什么要这么做呢?两个原因:
IHtmlString被写为原始数据.视图引擎假设创建的人IHtmlString已经清理了数据.IHtmlString有自己的stringify方法,因此它不需要具有相同的实现ToString().虽然ToHtmlString()必须返回HTML,但您可以轻松地想象ToString()可能会返回一些开发人员友好的调试信息.| 归档时间: |
|
| 查看次数: |
11908 次 |
| 最近记录: |