Security 当使用同步器令牌模式时,如何向客户端发送CSRF令牌?

Security 当使用同步器令牌模式时,如何向客户端发送CSRF令牌?,security,token,csrf,Security,Token,Csrf,在同步器令牌模式中,服务器生成一个随机令牌,客户端每次提交表单时都必须提交该令牌。客户机如何知道在服务器中创建的CSRF令牌 在GET请求时,您可以将令牌放入结果页面。它可以作为隐藏字段写入表单,以便在发送表单时自动发送,也可以使用类似于元头()的方式,或者几乎任何其他方式 如果只是普通的旧表单帖子,那么隐藏字段可能是最简单的。如果涉及javascript(ajax请求),您最好在页面中有一个中心位置(比如元标题),任何javascript都可以从这个位置获取它 同样使用表单,您可以为每个新页面

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

在GET请求时,您可以将令牌放入结果页面。它可以作为隐藏字段写入表单,以便在发送表单时自动发送,也可以使用类似于元头(
)的方式,或者几乎任何其他方式

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


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

但我最初的问题是服务器如何发送生成的令牌?@KasunDharmadasa我想我已经回答了这个问题。服务器将令牌放入为客户机生成的页面中,可以是每种形式,也可以是单个隐藏字段,或者JS值,或者元头,或者几乎任何您可以想到的方式。这将是对页面请求的响应的一部分。如果服务器只提供静态
index.html
文件怎么办?@Rachmaninoff需要某种动态组件,否则它是静态的(只读),您不需要csrf保护。如果你说的是一个纯spa,使用cdn提供的javascript和html,这是一个很好的问题,但答案不适合这里,所以请单独发布。@GaborLengyel我的意思是,spa是用AngularJS编写的