请参考下面的代码来模拟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>
答案 0 :(得分:3)
现在当我输入alert(“Hacked”)时,不应该抛出一个消息框。
不,当然不是。 alert("Hacked")
是一个javascript函数,而你在<h1>
代码中有Html.Raw。
所以你最终得到以下标记:
<h1>alert("Hacked")<h1>
您不能指望抛出任何消息框。如果你想扔东西,请确保你正确地攻击它,即在文本框中输入以下内容:
<script>alert("Gotcha this time")</script>