我有一个页面,该页面在加载时会生成@Html.AntiForgeryToken()
的防伪令牌。这在布局文件中发生。该页面可以打开一个带有iframe的弹出窗口。此iframe使用@Html.AntiForgeryToken()
生成自己的防伪令牌。
在您可以打开弹出窗口的页面上,用户可以注销。注销请求包括此页面加载时生成的防伪令牌。
鉴于我这样做:
注销成功。这是为什么?新令牌不会取代服务器上的旧令牌吗?还是我验证过的防伪令牌作为cookie存储在浏览器中,以便当我通过注销请求传递防伪令牌值时,浏览器还传递与之进行比较的匹配的防伪令牌cookie? >
我使用的是ASP.NET 4.5.2和MVC 5.2.3。
答案 0 :(得分:0)
Seems like it is saved in a cookie.这不是.NET Core文章中的不是,尽管它可能的工作方式与此相同。
ASP.NET Web Stack运行时使用同步令牌的变体 防御XSRF攻击的模式。的一般形式 同步器令牌模式是两个反XSRF令牌是 与每个HTTP POST一起提交给服务器(除了 身份验证令牌):一个令牌为Cookie,另一个为表单 值。由ASP.NET运行时生成的令牌值不是 攻击者可以确定或可预测的。当令牌是 提交后,服务器将仅在两个都允许的情况下继续请求 令牌通过比较检查。