任何人都可以帮助如何为每个请求生成csrf令牌以及如何验证它。
答案 0 :(得分:1)
通常,您必须从表单模板getToken
中包含表单中的隐藏输入,然后在接收Servlet中确保您收到POST请求并isValid
。
如何在整个应用中保持一致性取决于您使用的框架代码。如果你通过“Action Class”引用Struts 2,那么该框架已经有了自己的CSRF TokenSessionInterceptor
机制,通常你想重用它。
现在要求是针对每个请求
如果您的意思是有人要求在每次加载页面时更改CSRF令牌,那么您应该反对该请求,因为它是假的。
“每次请求都没有使CSRF令牌失效”是笔测试报告中的常见填充查找,但修复它会使您的应用程序更难用。如果您的旧令牌在每个新页面上无效,那么您将无法同时在两个标签页中使用不同的页面,或者导航回页面然后提交表单。
当 无效CSRF令牌(并发布新的令牌)时,您的会话无效:在任何权限级别更改时。最明显的是,当用户成功登录时,您应该丢弃旧会话及其中的旧CSRF令牌,并用新令牌替换它们以防止会话固定攻击。
但是,进一步牺牲可用性,不会增加安全性。