设计和CSRF

时间:2014-01-08 02:36:54

标签: ruby-on-rails devise csrf

我间歇地在Rails日志中收到CSRF警告。我想我已经解决了这个问题,但是想从安全的角度来看解决方案是否合理。

这是一个带有Devise应用程序和一些Angular JS的Rails 4应用程序。有时在某个页面上,用户会话可以超时,然后我们发出一个AJAX请求(虽然我也可以在正常的html请求中看到它,它只是在JS中更经常地主要自我)我们在日志中得到一个401并且可以从中处理点。问题出现在401之前,我们收到以下消息:

警告:无法验证CSRF令牌真实性

这是嘈杂的,所以我不知道是否有真正的攻击正在进行。他们已经退出了,我相信他们的令牌不再有效。

我相信这是因为在Application Controller中protect_from_forgery发生在我的设计authenticate_user之前!过滤。所以:

class ApplicationController < ActionController::Base

  protect_from_forgery
  etc....
end

发生之前

class MyController < ApplicationController

   before_filter :authenticate_user!

   def new
   end
end

如果我将上述内容更改为prepend_before_action :authenticate_user!,CSRF消息就会消失。我的问题是(安全)有理由不这样做吗?我没有看到其他人这样做,所以假设他们也必须得到这个消息?对我来说,Devise是我们过滤器链中发生的第一件事之一,但并不认为这是常见做法。

提前致谢:)

0 个答案:

没有答案