我一直在使用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);" />
呈现的页面显示为:
这不会导致在浏览器中显示实际警报框,只会反射文本。
这是一个需要解决的XSS问题吗?如果是这样,怎么样?
答案 0 :(得分:1)
不,这不是XSS问题,因为未执行javascript警报。 Razor Html帮助程序正确编码和解码文本,以防止这种情况发生。