在VS2012 MVC4应用程序中模拟XSS攻击

Simulating an XSS attack in a VS2012 MVC4 application

本文关键字:模拟 XSS 攻击 应用程序 VS2012 MVC4      更新时间:2023-09-26

我有一个MVC 4应用程序,我试图在其中模拟XSS连接。我只有一个按钮和文本框,它将输出在文本框中输入的值,如下所示。当我在文本框中自动输入<script>alert('xss')</script>时,会显示一个异常,说明从客户端检测到了危险值。我如何至少出于学习目的防止这种情况发生现在,在遵循Furqan的建议后,这个例外并没有出现。然而,我希望出现警报消息框,但它没有出现,相反,脚本标记显示为字符串。

有人能解释一下为什么是这样吗?

@{
    ViewBag.Title = "Index";
}
<h2>Index</h2>
<h2>@ViewBag.Message</h2>
<form method="post" action="/home/index">
<input type ="text" id="text" name="search" value="@ViewBag.Message"/>
<input type="submit" />
    </form>

这些是我的控制器操作。

public ActionResult Index()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Index(string search)
        {
            ViewBag.Message = search;
            return View();
        }

您需要在Action上使用[ValidateInput(false)],在View:中使用@Html.Raw

控制器:

[HttpPost]
[ValidateInput(false)]
public ActionResult Index(string search)
{
    ViewBag.Message = search;
    return View();
}

视图:

<h2>@Html.Raw(ViewBag.Message)</h2>

MSDN有一篇关于防止跨站点脚本的好文章:如何:防止ASP.NET中的跨站点脚本。

您可能还想尝试一些安全工具,如Netsparker,它将测试一系列常见和不太常见的攻击向量。