每个请求的Csrf令牌

时间:2013-12-18 15:25:27

标签: java security jsp csrf

任何人都可以帮助如何为每个请求生成csrf令牌以及如何验证它。

1 个答案:

答案 0 :(得分:1)

通常,您必须从表单模板getToken中包含表单中的隐藏输入,然后在接收Servlet中确保您收到POST请求并isValid

如何在整个应用中保持一致性取决于您使用的框架代码。如果你通过“Action Class”引用Struts 2,那么该框架已经有了自己的CSRF TokenSessionInterceptor机制,通常你想重用它。

  

现在要求是针对每个请求

如果您的意思是有人要求在每次加载页面时更改CSRF令牌,那么您应该反对该请求,因为它是假的。

“每次请求都没有使CSRF令牌失效”是笔测试报告中的常见填充查找,但修复它会使您的应用程序更难用。如果您的旧令牌在每个新页面上无效,那么您将无法同时在两个标签页中使用不同的页面,或者导航回页面然后提交表单。

无效CSRF令牌(并发布新的令牌)时,您的会话无效:在任何权限级别更改时。最明显的是,当用户成功登录时,您应该丢弃旧会话及其中的旧CSRF令牌,并用新令牌替换它们以防止会话固定攻击。

但是,进一步牺牲可用性,不会增加安全性。