当前位置: 首页 > 知识库问答 >
问题:

使用会话令牌实现CSRF保护

燕凯旋
2023-03-14

我的问题是,对每个表单使用一个令牌,而不更新每个表单提交的令牌,安全吗?这能防止CSRF吗?

共有1个答案

潘志国
2023-03-14

是,不需要更新CSRF令牌。它只需要每个用户会话是唯一的。

由于攻击者没有办法读取隐藏表单字段的值,因此可以在会话期间重用相同的值。更新此值不会实现额外的安全性。

但是,它绝对应该是每个用户会话的唯一值。不同的用户应该有不同的令牌,如果同一个用户再次登录,最好将前一个令牌过期。

 类似资料:
  • 问题内容: Django随附CSRF保护中间件,该中间件生成用于表单的唯一每次会话令牌。它扫描所有传入的请求以获取正确的令牌,如果令牌丢失或无效,则拒绝该请求。 我想对某些POST请求使用AJAX,但表示请求没有CSRF令牌。这些页面没有任何要钩的元素,我宁可不要弄混将标记作为隐藏值插入的标记。我认为实现此目的的一种好方法是公开vew,以返回用户的令牌,这依赖于浏览器的跨站点脚本编写规则来防止恶意

  • 我读到,当使用JWT时,不需要防止CSRF攻击,例如:“由于您不依赖cookie,您不需要防止跨站点请求”。 但是,有一点我不明白:如果我将令牌存储在localStorage中(正如我在同一网站的教程中被告知的那样),那么攻击者如何防止通过读取我的localStorage而不是Cookie来伪造恶意请求呢? 由于它是在服务器端生成的,我不知道如何在客户机请求中使用令牌而不将其存储在客户机的某个地方

  • 示例: 爱丽丝通过浏览器登录到“https://example.com”(使用cookie)。我想,她使用的是现代浏览器。 爱丽丝访问“https://evil.com”,而evil.com的客户端代码对“https://example.com”执行某种请求(经典CSRF场景)。 所以: null null

  • 我正在AngularJS SPA中使用资源所有者密码凭证OAuth 2.0流。有几篇文章(这里,这里…)这个问题的答案解释了我们不应该将刷新令牌存储在(web)客户端(LocalStorage)上,而是将它们加密存储在HttpOnly Cookie中,并使用代理API实现对refreh令牌的解密,从而将其转发给安全令牌服务。 大多数文章都暗示我们应该使用一种常见的保护机制来关注CSRF。我想知道单

  • 当应用程序依赖于无状态身份验证(使用类似HMAC的东西)时,是否有必要使用CSRF保护? 示例: > 我们有一个单页应用程序(否则我们必须在每个链接上添加令牌:。 此内标识将用于访问诸如之类的受限URL。 令牌将始终在HTTP头内传输。 没有Http会话,也没有cookie。

  • 本页描述了解释CSRF攻击的用例(16.1): https://docs.spring.io/spring-security/site/docs/current/reference/html/csrf.html 但是,如果用户确实登录了银行的网站,那么邪恶的网站难道不可能发出GET请求以获取新的CSRF令牌,并在根本不需要用户的情况下撰写帖子吗? 答案必须是否定的,否则CSRF令牌将毫无用处,但我