2014-11-08 135 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令牌存儲在會話中。

相關問題