相关疑难解决方法(0)

移动设备中的InvalidAuthenticityToken错误

我已经在StackOverflow上阅读了关于InvalidAuthenticityToken和protect_from_forgery的多个问题和答案,但没有更明智.

我有一个网站每天都会收到数百个这样的错误.它们似乎主要(仅限于?)来自移动设备,但我只通过样本验证过.

我理解为什么有AuthenticityToken和添加的需要

<%= csrf_meta_tags %>
Run Code Online (Sandbox Code Playgroud)

在application.html(我有)以及在应用程序控制器中有protect_from_forgery.我有csrf_meta_tags和:

protect_from_forgery with: :exception
Run Code Online (Sandbox Code Playgroud)

在我的应用程序控制器中,默认情况下.

我意识到我可以通过删除protect_from_forgery来"解决"这个问题,但这会让我容易受到CSRF攻击,所以这不是真正的解决方案,是吗?对于发生的表单帖子,我可以为protect_from_forgery添加一个"except",但这会让我感到非常脆弱,对吧?

编辑:我尝试使用移动设备访问表单,禁用Cookie并遇到422错误.无法让它导致异常.为我的"结果"函数添加一个例外删除了,但这让我觉得它很脆弱?

Edit2:我在同一页面上有几个表单(例如搜索表单).也许这会影响这个问题?

我现在处于一个我无法拥有它的位置,因为它每天导致数百名用户出错,我无法将其删除,因为我担心它会使我的网站容易受到攻击.

那么,我该怎么办?有一个像样的中间地带?

有什么方法可以改变protect_from_forgery并仍然相信我不会被黑客破坏我的数据库吗?

我没有为网站使用任何API,并且所有错误都来自相同类型的表单.我知道这个问题有一个javascript部分但不是真的如何使用该信息来解决问题.

提前致谢!

我得到的异常示例:

An ActionController::InvalidAuthenticityToken occurred in calculations#result: 

ActionController::InvalidAuthenticityToken 

------------------------------- 
Request: 
------------------------------- 

* URL : http://www.example.com/calculation/result 
* HTTP Method: PUT 
* IP address : 217.214.148.251 
* Parameters : {"utf8"=>"?", "_method"=>"put", "authenticity_token"=>"udnClerrF5UWvg84uaD82TzmPx/vWssv2wN9UPqyn10UwXqbOwa2FBtnZ5Nfo7HPh9xbA2OSrrUNineW50XiYg==", "commit"=>"Calculate", "controller"=>"calculations", "action"=>"result", "id"=>"123"} 
* Timestamp : 2016-08-19 12:11:09 UTC 
* Server : 2696e83c-1538-434d-ab6d-4e16577698d0 
* Rails root : /app 
* Process: 6 

------------------------------- 
Session: 
------------------------------- 

* session id: "42b36aacc78102605cb3365922a550b1" 
* data: {"session_id"=>"42b36aacc78102605cb3365922a550b1", …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails protect-from-forgery csrf-protection

5
推荐指数
1
解决办法
855
查看次数