一尘不染

每个请求的Csrf令牌

jsp

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


阅读 331

收藏
2020-06-10

共1个答案

一尘不染

通常,您必须getToken从表单模板中将隐藏的输入包括在表单中,然后在接收Servlet中确保获得POST请求和isValid

如何在整个应用程序中始终保持一致,将取决于您所使用的框架代码。如果通过“动作类”指的是Struts
2,则该框架已经具有自己TokenSessionInterceptor的CSRF机制,通常您希望重复使用该机制。

现在要求是每个请求

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

在笔测试报告中,“
CSRF令牌不会在每个请求上均无效”是一种常见的填充物查找方法,但对其进行修复将使您的应用程序可用性大大降低。如果您的旧令牌在每个新页面上均无效,则您将无法同时在两个选项卡中使用不同的页面,或者无法导航回页面然后提交表单。

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

但是走得更远会牺牲可用性,而不会获得安全性。

2020-06-10