单页应用程序的cookie中的Csrf令牌池?

时间:2015-08-06 08:12:05

标签: javascript csrf csrf-protection

我的申请是单页申请。客户端 - 服务器通信正在通过ajax API运行,除了第一页加载(index.html / php)和模板是基于前端的。服务器只有有效的响应是json。

每个表单提交都是使用javascript处理的。

服务器令牌验证不是此问题的一部分。

我的第一次流程

  • 用户输入csrf标记的页面作为某个html值。
  • Javascript选择令牌并将其保存为javascript变量。
  • 当用户进入thrue应用程序时,每个后端请求(POST)javascript附加csrf令牌。响应中存在新的csrf令牌。

但是这个流程有问题,一旦用户打开另一个窗口,csrf令牌就不会对前一个窗口有效。

我的第二次流程

  • 用户输入页面,csrf令牌作为cookie存在
  • 当用户进入thrue应用程序时,每个后端请求(POST)javascript从cookie中选择csrf令牌并将其附加到请求中。
  • 请求完成后,服务器会更改cookie值。

(请注意,此流服务器不会验证cookie本身,而是验证我们从cookie中获取的值。)

此流程略好一些,用户可以打开多个窗口,但当时只有一个请求有效。

我的第三次流程

与第二个流程相同,但是只有一个csrf令牌,服务器提供令牌池。用户被限制请求尽可能多的请求,因为池的大小(实现者选择)。请求当时只使用一个令牌,此令牌被标记为"正在使用"。每次请求命中服务器时,服务器都会使用新值更新池中的csrf令牌。

问题: 你会认为第二和第三流是安全的做法还是有办法以某种方式欺骗这个? 是第三流"应用程序是否持续"?

0 个答案:

没有答案