关于@Html.AntiForgeryToken()
Regarding the @Html.AntiForgeryToken()
所以我想知道 antiForegryToken 有多重要,因为它给我带来了一些问题。
我有一个 class,我会查看用户是否在角色 "PremiumAnvändare"(瑞典语中是 PremiumUser),如果不是,我将他们重定向到 "rolenotfound"。
public ActionResult Create()
{
if (User.IsInRole("PremiumAnvändare"))
{
ViewBag.SammanhangsID = new SelectList(db.Sammanhangs, "SammanhangsID", "Namn");
return View();
}
Response.Redirect("rolenotfound");
return View();
}
但是当用户被重定向到 rolenotfound 时,我得到了错误
An exception of type 'System.Web.HttpException' occurred in
System.Web.dll but was not handled in user code
The server can not add a header after HTTP headers have been sent.
这可以通过删除@Html.AntiForgeryToken()
来解决
我是不是做错了什么或者是否可以删除令牌?我对它进行了一些研究,我知道它是为了抵御跨站点攻击,但我认为这不会成为问题,因为我们正在制作移动应用程序。但是请指正并教我,这样我才能做对。
我认为您遇到的问题是您在重定向后没有结束响应。 Response.Redirect("rolenotfound");
和 Response.Redirect("rolenotfound", true);
之间的区别在于,第二个将中止线程并阻止执行 return View();
.
我假设,尽管执行了重定向,return View();
将执行并抛出 System.Web.HttpException
。
我认为 CSRF 很常见(至少如果你有一个对攻击者有吸引力的应用程序)但没有人会告诉你是否需要这种保护 - 你必须自己决定。
我通过更改
解决了它
Response.Redirect("rolenotfound");
return View();
至
return PartialView("rolenotfound");
这并没有妨碍我使用防伪令牌,但是这种情况下不包括布局,但这在我的项目中不会成为问题。
所以我想知道 antiForegryToken 有多重要,因为它给我带来了一些问题。
我有一个 class,我会查看用户是否在角色 "PremiumAnvändare"(瑞典语中是 PremiumUser),如果不是,我将他们重定向到 "rolenotfound"。
public ActionResult Create()
{
if (User.IsInRole("PremiumAnvändare"))
{
ViewBag.SammanhangsID = new SelectList(db.Sammanhangs, "SammanhangsID", "Namn");
return View();
}
Response.Redirect("rolenotfound");
return View();
}
但是当用户被重定向到 rolenotfound 时,我得到了错误
An exception of type 'System.Web.HttpException' occurred in System.Web.dll but was not handled in user code
The server can not add a header after HTTP headers have been sent.
这可以通过删除@Html.AntiForgeryToken()
我是不是做错了什么或者是否可以删除令牌?我对它进行了一些研究,我知道它是为了抵御跨站点攻击,但我认为这不会成为问题,因为我们正在制作移动应用程序。但是请指正并教我,这样我才能做对。
我认为您遇到的问题是您在重定向后没有结束响应。 Response.Redirect("rolenotfound");
和 Response.Redirect("rolenotfound", true);
之间的区别在于,第二个将中止线程并阻止执行 return View();
.
我假设,尽管执行了重定向,return View();
将执行并抛出 System.Web.HttpException
。
我认为 CSRF 很常见(至少如果你有一个对攻击者有吸引力的应用程序)但没有人会告诉你是否需要这种保护 - 你必须自己决定。
我通过更改
解决了它Response.Redirect("rolenotfound");
return View();
至
return PartialView("rolenotfound");
这并没有妨碍我使用防伪令牌,但是这种情况下不包括布局,但这在我的项目中不会成为问题。