修复ASP.Net MVC中的跨站点脚本(已反映)

时间:2014-05-15 03:05:16

标签: asp.net-mvc xss

我一直在使用Zed Attack Proxy (ZAP)来测试正在开发的新应用程序。该应用程序是基于ASP.NET MVC4的,尽可能使用标准HTML帮助程序。

ZAP已确定以下警告:

跨站点脚本(已反映)

GET:  localhost:65227/CashReceipt?SearchText=javascript%3Aalert%281%29%3B

在此页面上,我们有一个收据列表和一个搜索框,用户可以按收据编号进行搜索。

使用上面的链接调用此页面时,以下Razor会构建页面的相关部分:

@using (Html.BeginForm("Index", "CashReceipt", FormMethod.Get, new { @class = "form-inline", @role = "form" }))
{
<div class="form-group">
    <label class="hidden-label" for="SearchText">Search For</label>
    @Html.TextBoxFor(m => m.SearchText, new { @class = "form-control input-lg", @placeholder = "Receipt Number" })
</div>
<input type="submit" value="Search" class="btn btn-primary btn-lg" />
}

生成的HTML是:

<input class="form-control input-lg" id="SearchText" name="SearchText" placeholder="Receipt Number" type="text" value="javascript:alert(1);" />

呈现的页面显示为:

enter image description here

这不会导致在浏览器中显示实际警报框,只会反射文本。

这是一个需要解决的XSS问题吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:1)

不,这不是XSS问题,因为未执行javascript警报。 Razor Html帮助程序正确编码和解码文本,以防止这种情况发生。