我有一个 .cshtml 页面,其中包含以下 HTML:
<div class="content rowBody">
<span class="rowText" title="@description">
@description
</span>
</div>
如果@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>