带iframe的弹出窗口:一次使用多个@ Html.AntiForgeryToken()

时间:2018-06-26 12:55:07

标签: c# asp.net asp.net-mvc security antiforgerytoken

我有一个页面,该页面在加载时会生成@Html.AntiForgeryToken()的防伪令牌。这在布局文件中发生。该页面可以打开一个带有iframe的弹出窗口。此iframe使用@Html.AntiForgeryToken()生成自己的防伪令牌。

在您可以打开弹出窗口的页面上,用户可以注销。注销请求包括此页面加载时生成的防伪令牌。

鉴于我这样做:

  • 加载可以打开弹出窗口的页面(生成防伪令牌)
  • 打开带有iframe的弹出窗口(在iframe中会生成一个新的防伪令牌)
  • 从我可以打开弹出窗口的页面注销

注销成功。这是为什么?新令牌不会取代服务器上的旧令牌吗?还是我验证过的防伪令牌作为cookie存储在浏览器中,以便当我通过注销请求传递防伪令牌值时,浏览器还传递与之进行比较的匹配的防伪令牌cookie? >

我使用的是ASP.NET 4.5.2和MVC 5.2.3。

1 个答案:

答案 0 :(得分:0)

Seems like it is saved in a cookie.这不是.NET Core文章中的不是,尽管它可能的工作方式与此相同。

  

ASP.NET Web Stack运行时使用同步令牌的变体   防御XSRF攻击的模式。的一般形式   同步器令牌模式是两个反XSRF令牌是   与每个HTTP POST一起提交给服务器(除了   身份验证令牌):一个令牌为Cookie,另一个为表单   值。由ASP.NET运行时生成的令牌值不是   攻击者可以确定或可预测的。当令牌是   提交后,服务器将仅在两个都允许的情况下继续请求   令牌通过比较检查。