2012-02-25 25 views
0

我建立on Rails的一個應用程序,我有我的application.rbprotect_from_forgery。我還爲移動應用程序構建了一個RESTful API,以使用JSON數據進行通信。我發現一些網站聲稱,爲了讓移動應用程序與rails應用程序進行交互,他們關閉了用於JSON請求的protect_from_forgeryRails的protect_from_forgery與移動應用

這如何解決CSRF的問題呢?惡意網站可否沒有JSON POST請求代表用戶執行不需要的更改?

因此,要解決這個問題,我決定使用自定義mime-type或者一個special key只有移動應用程序將使用,然後有protect_from_forgery執行以下操作:如果CSRF

  1. 檢查令牌存在爲hidden div(對於Web應用程序爲true並且默認包含)。
  2. 如果不存在,檢查此special keymime-type

反正有沒有做到這一點,或者類似的,來解決這個問題呢?

更新

事實證明,我已經過深思熟慮的問題。 Rails是「神奇的」,並以某種方式自動適當地處理來自移動應用程序的請求,而不會引發異常。所以,基本上我們不需要做任何修改。

我不太護軌是如何實現這個雖然 - 教學上來講,這仍然可能是有趣的知道一些。

+0

來自移動應用程序的請求是如何製作的? – Dad 2012-04-07 00:11:30

回答

2

您不必使用ActiveResources。如果您將請求作爲xml發送,則它將繞過protect_from_forgery。

curl -H "Content-Type: text/xml" -d "<support-request><from>...</from></support-request>" -X POST http://localhost:3000/support_requests.xml -i 

它應該是非常簡單的。

相關問題