【发布时间】:2015-08-15 10:23:50
【问题描述】:
我目前正在与其他一些开发人员一起开发 Rails 应用程序,并且通过 Angular 通过 AJAX 向服务器发送 POST。有时,我们注意到一些InvalidAuthenticityToken 异常来自我们的电子邮件日志,这导致我们想要采取行动。
由于这个请求是通过 Angular 发出的,我认为我们将服务器视为 API,我们应该使用 protect_from_forgery with: :null_session。但是,protect_from_forgery with: :reset_session 似乎为我们提供了相同的分辨率。
我不希望仅仅因为推荐就盲目插入代码,所以我想知道这两种防伪方法之间的区别。我什么时候会使用其中一种,为什么我更喜欢使用它?
【问题讨论】:
-
所提供的答案是一个很好的答案,但如果您想确保真正防止 CSRF 攻击,我建议您深入研究一下。有一些重要的细微之处值得注意。当我对同一主题有疑问时,我发现以下一些博客文章有助于理解风险:nvisium.com/blog/2014/09/10/understanding-protectfromforgeryblog.srcclr.com/when-rails-protect_from_forgery-failssitepoint.com/… 我的主要收获是有一些插件
标签: ruby-on-rails ruby angularjs