模拟XSS攻击不起作用

时间:2014-01-25 13:58:32

标签: javascript html asp.net-mvc razor xss

请参考下面的代码来模拟XSS攻击。但不幸的是它没有用。 现在当我输入<script type="text/javascript">alert("Hacked")</script>时,不应该抛出一个消息框。但它没有显示。虽然我可以在视图源中以未编码的形式看到它。这应该是一些小错误,但我无法弄明白。

public class HomeController : Controller
    {
        //
        // GET: /Home/

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

    }

视图代码是

@{
    ViewBag.Title = "Index";
}
<h2>Index</h2>
<form method="post">
<input type="text" name="Id" />
<input type="submit" name="submit" value="submit"/>
</form>
<h2>The Data you entered is</h2>
<h1>@Html.Raw(ViewBag.Message)</h1>

1 个答案:

答案 0 :(得分:3)

  

现在当我输入alert(“Hacked”)时,不应该抛出一个消息框。

不,当然不是。 alert("Hacked")是一个javascript函数,而你在<h1>代码中有Html.Raw。

所以你最终得到以下标记:

<h1>alert("Hacked")<h1>

您不能指望抛出任何消息框。如果你想扔东西,请确保你正确地攻击它,即在文本框中输入以下内容:

<script>alert("Gotcha this time")</script>