【发布时间】:2012-09-24 06:12:04
【问题描述】:
我正在实施此处所述的防伪框架:
另外,为了尽量减少编码工作,我在客户端处理 form.onsmit 和 ajaxsend 事件时进行了令牌插入部分。一切正常 - 直到会话到期。
在我的应用程序中,当用户会话超时时,我会显示一个弹出窗口,用户可以在其中重新登录并继续而不刷新当前页面,以便进行中的工作是安全的。但这并不适合 Anti-CSRF 逻辑。当用户在会话超时后尝试重新登录时,这会引发 CSRF 异常,因为 cookie (__RequestVerificationToken_Lw__) 已经过期,并且所有未来的 POST 将在下一页刷新之前无效。
有没有办法将 cookie 结束时间设置为将来的日期而不是“会话”?我试图编辑 Response.Cookie 但这使 cookie 无效。
任何帮助将不胜感激。 谢谢
【问题讨论】:
-
你可以使用 jQuery 和 $.cookie("RequestVerificationToken_Lw", 1, { expires : 10 });这将使 cookie 在 1 天内过期(您可以自定义为不同的时间跨度)
-
感谢@DarrenDavies 的回复。但这些 cookie 是 httponly 的,无法使用 javascript 访问。
标签: asp.net-mvc-3 csrf