Try*_*ity 5 html xss encoding razor asp.net-mvc-3
我有一个 .cshtml 页面,其中包含以下 HTML:
<div class="content rowBody">
<span class="rowText" title="@description">
@description
</span>
</div>
Run Code Online (Sandbox Code Playgroud)
如果 @description 的值是:我看到它在title<img src=x onerror=alert(/XSS/.source)>属性
中像这样显示并因此执行,而 span 标记之间的值似乎已编码并且不会触发警报框。
我的假设是 Razor 引擎视图尝试对 @ 前面的任何内容进行编码。这不适用于 HTML 属性吗?
生成来源:
<div style="margin-left: 31px;" class="content rowBody unselectable" unselectable="on">
<span class="rowText unselectable" title="<img src=x onerror=alert(/XSS/.source)>" unselectable="on">
<img src=x onerror=alert(/XSS/.source)>
</span>
</div>
Run Code Online (Sandbox Code Playgroud)
看起来您在这里看到的是基于上下文的不同编码。HTML 标签所需的输出编码与 HTML 属性不同,因为它对于 JavaScript 不同,对于 CSS 也不同。
话虽如此,我无法使用干净的 MVC4 项目重现此行为。您使用什么版本?