小编dav*_*idh的帖子

为什么Rails给我"无法验证CSRF令牌真实性"错误?

我在Rails生产中得到了"无法验证CSRF令牌真实性".我的问题是:

  1. 它为什么这样做?
  2. 我该如何解决?

这是我的Heroku日志(一些值是匿名的):

2016-02-13T01:18:54.118956+00:00 heroku[router]: at=info method=POST path="/login" host=[MYURL] request_id=[ID STRING] fwd="FWDIP" dyno=web.1 connect=0ms service=6ms status=422 bytes=1783  
2016-02-13T01:18:54.116581+00:00 app[web.1]: Started POST "/login" for [IPADDRESS] at 2016-02-13 01:18:54 +0000  
2016-02-13T01:18:54.119372+00:00 app[web.1]: Completed 422 Unprocessable Entity in 1ms  
2016-02-13T01:18:54.118587+00:00 app[web.1]: Processing by SessionsController#create as HTML
2016-02-13T01:18:54.118637+00:00 app[web.1]:   Parameters: {"utf8"=>"?", "authenticity_token"=>"[BIGLONGRANDOMTOKENSTRING]", "session"=>{"email"=>"[FRIENDSEMAILADDRESS]", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}  
2016-02-13T01:18:54.119082+00:00 app[web.1]: Can't verify CSRF token authenticity  
2016-02-13T01:18:54.120565+00:00 app[web.1]:  
2016-02-13T01:18:54.120567+00:00 app[web.1]:  ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):  
2016-02-13T01:18:54.120569+00:00 app[web.1]:   vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.0/lib/action_controller/metal/request_forgery_protection.rb:181:in `handle_unverified_request'  
.  
.  
.etc  
Run Code Online (Sandbox Code Playgroud)

我所知道的唯一表现就是当我的朋友试图在他的iPhone 5上使用Safari登录时.他的用户帐户是在大约6个月前创建的.我99%肯定他当时用他的手机很好地访问了网站.从那以后他还没有登录,我也不知道我对登录/授权代码所做的任何更改.昨天我让他在约6个月内第一次打到我的网站,现在他得到了CSRF错误.

此问题不会发生在任何其他用户帐户(我知道)或任何其他设备上.事实上,从他的旧版iPhone 4登录到他的帐户就可以了.

我有相当数量的开发经验,但我对web开发和一切Rails都是全新的.

这就是我所拥有的: …

html security ruby-on-rails erb csrf

8
推荐指数
1
解决办法
4186
查看次数

标签 统计

csrf ×1

erb ×1

html ×1

ruby-on-rails ×1

security ×1