2014-11-08 120 views
0

我的Rails应用程序随时会给我发送ActionController :: InvalidAuthenticityToken的随机createupdate动作的bug报告。我的头标中有csrf_meta_tags,我的请求中有99%是工作的。Rails ActionController :: InvalidAuthenticityToken错误

在文档中,我看过比我可以试试protect_from_forgery with: :null_session,但是这个选项只适用于API。

我不知道该怎么做。你有什么建议吗?

我使用的是Rails 4.1,但是我对旧版本有同样的问题。

+0

'ajax'请求? – Nithin 2014-11-08 17:39:09

+0

不,不仅... – 2014-11-08 17:46:21

+0

这是生产吗?他们可能是合法的跨站点伪造攻击。记录所有的事情,甚至是快乐的行为,看看他们是否在应用程序的预期流程中弹出。 – kreek 2014-11-10 20:05:55

回答

0

当您执行custom Ajax时,必须这样做。您必须明确传递csrf令牌。像这样的东西对我来说几乎有90%的效果。

$.ajax your_url , 
    beforeSend: (xhr) -> 
     xhr.setRequestHeader "X-CSRF-Token", $("meta[name=\"csrf-token\"]").attr("content") 

是的,这是不建议使用

protect_from_forgery with: :null_session 

除非你有很好的机制和欺诈性的要求区别开来。在API中,我们通常有一些token这有助于验证请求。

0

如果您将session_id存储在cookie中,那些请求可能来自禁用cookie的用户。事实上,他们甚至无法登录,因为CSRF令牌存储在会话中。

相关问题