0
@using MvcMusicStore.Models;
@model IEnumerable<Album>

@{
ViewBag.Title = "List2";
string hola = "Test <script>alert('bip')</script>";

}

 <h2>@@List2</h2>
 <span>@hola</span>

 <ul>
  @foreach (Album a in Model )
   {
<li>@a.Title,@a.Tipo</li>

}

</ul>

我已经读过剃须刀自动对字符串进行html编码,但是在我看来,上面的代码我仍然可以按原样获得字符串,而无需任何编码。

顺便说一句,我在本地主机上运行,​​以防它以任何方式影响。

提前致谢

更新:

感谢您对 Codo 的特别回答。问题是我只是查看打印在页面上的文本,而不是查看反映编码的页面源。

谢谢

4

2 回答 2

0

我已将测试用例简化为相关部分:

@{
  string hola = "Test <script>alert('bip')</script>";
}

<span>@hola</span>

执行时,它会生成以下 HTML 代码(查看源 HTML 时):

<span>Test &lt;script&gt;alert(&#39;bip&#39;)&lt;/script&gt;</span>

在浏览器中,它显示:

测试 <script>alert('bip')</script>

它不会将其作为 Javascript 代码执行,也不会显示警告框。

所以我会说它作为广告工作并正确编码 HTML。

于 2012-12-13T07:54:42.277 回答
-1

我在这里看不到问题:

<span>@Html.Raw(hola)</span>
<br />
<span>@hola</span>

结果在浏览器中可见:

Test 
Test <script>alert('bip')</script> 

并且是“警报弹出”说bip。

注意:这不是您期待的答案,请更详细地解释您的问题。

于 2012-12-13T07:37:44.177 回答