【问题标题】:How to send the CSRF token to the client when using synchronizer token pattern?使用同步器令牌模式时如何将 CSRF 令牌发送到客户端?
【发布时间】:2018-03-19 14:29:48
【问题描述】:

在同步器令牌模式中,服务器生成一个随机令牌,并且该令牌必须由客户端每次提交的表单提交。客户端如何知道在服务器中创建的 CSRF 令牌?

【问题讨论】:

    标签: security token csrf


    【解决方案1】:

    根据 GET 请求,您可以将令牌放入结果页面。它既可以作为隐藏字段写入表单,以便在发送表单时自动发送,也可以以元标头 (<meta name="csrftoken" content="...">) 或几乎任何其他方式编写。

    如果只是简单的旧表单帖子,隐藏字段可能是最简单的。如果涉及 javascript(ajax 请求),您可能最好在页面中的一个中心位置(如元标题),任何 javascript 都可以从中获取它。

    此外,对于表单,您可以为每个新页面下载生成不同的令牌,但对于 ajax-heavy 应用程序更改令牌会导致问题 - 对于大多数应用程序,每个登录会话一个令牌是可以接受的。

    【讨论】:

    • 但是我最初的问题是服务器如何发送生成的令牌?
    • @KasunDharmadasa 我想我就是这么回答的。服务器将令牌放入为客户端生成的页面中,以每种形式,或作为单个隐藏字段,或 JS 值,或元标题,或几乎任何你能想到的方式。它将是对页面请求的响应的一部分。
    • 如果服务器只提供静态 index.html 文件怎么办?
    • @Rachmaninoff 需要某种动态组件,否则它都是静态的(只读),您不需要 csrf 保护。如果您谈论的是从 cdn 提供的带有 javascript 和 html 的纯水疗中心,这是一个很好的问题,但答案不适合这里,所以请单独发布。
    • @GaborLengyel 我的意思是,使用 AngularJS 编写的 SPA
    猜你喜欢
    • 2021-12-19
    • 2015-01-26
    • 2021-08-01
    • 2021-04-06
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 2013-04-09
    • 2018-08-27
    相关资源
    最近更新 更多