2010-11-23 69 views
3

我有一個Rails 3應用程序配置用戶註冊使用運行在服務器上的設計。我允許用戶通過網站登錄到服務器,並允許用戶使用Iphone App創建帳戶和登錄。如何允許a)不使用CSRF令牌+ SSL的HTTP認證或b)使用設計需要CSRF令牌?

當人們正在使用的iPhone應用程序,我想支持這兩個動作:

一)帳戶註冊沒有CSRF(做這個事業的任何安全問題)?

b)用由SSL

c)任何POST請求到服務器登錄到與SSL HTTP認證被固定後固定HTTP認證登錄。

當用戶在網站上時,我想在所有操作上都要求CSRF令牌(這樣用戶不會每次輸入用戶名和密碼)。

謝謝你的幫助。

+0

CSRF令牌與輸入用戶名和密碼無關。他們只是確保您不能對已登錄的用戶執行跨站點請求攻擊(例如,使用特製的Javascript鼠標懸停或嵌入式圖像)。他們只是確保在發佈表單時,表單是由用戶在您的網站上發起的。 – 2011-01-30 23:10:25

回答

3

您可以選擇性地禁用控制器或個別操作方法上的CSRF令牌。

class StatsController < ApplicationController 
    skip_before_filter :verify_authenticity_token 
    ... 
end 

實際上,我希望做類似的事情,我會在iPhone上使用不同的域名,並選擇禁用:verify_authenticity_token過濾器基於幾個條件。這只是爲了讓我們堅持下去,直到我們能夠啓動並運行我們的OAUTH2實施。

+1

詳細說明`skip_before_filter:verify_authenticity_token,:id =>:skip_csrf?`,然後只需在您的應用程序控制器上實現`skip_csrf?`就可以使用任何您想要的條件。 – 2011-01-30 23:08:33