2011-04-09 25 views
13

我可以使用任何使用Rails和SSL的開發人員的一些智慧。我有一個相當簡單的應用程序,我正在實施付款處理。顯然支付處理需要SSL,所以我現在就設置它。
我今天開始處理這件事的意圖是找到最簡單/最乾淨的方式來對特定的控制器操作實施SSL - 即任何與付款有關的事情。我認爲沒有理由在SSL上運行我的網站的其餘部分。Rails + SSL:每個控制器或整個應用程序?

我發現這似乎採取設置SSL每個控制器的行動沒有太大的困難的護理ssl_requirement gem,所以這是很好的。我也發現this question這似乎表明,處理與寶石的SSL現在是過時的。
我還發現了幾個答案/評論等,暗示一個網站應該只使用像Rack-SSL這樣的Rack中間件來強制整個網站進入SSL模式。

所以現在我有點困惑,不知道該怎麼辦。任何有Rails 3和SSL工作經驗的人都可以幫助我理解:

  1. 是否應該強制整個站點使用SSL,或者只使用某些操作。
  2. 什麼陷阱看出來的Rails中使用SSL(我從來沒有這樣做)。
  3. 如果每個控制器是要走的路,是否有意義使用ssl-requirement寶石還是我應該只使用新的路由和鏈路幫助選項...

我倒是很欣賞你的洞察力,這對我來說已經成爲一個癱瘓的決定。謝謝!

回答

6

,我發現自己「癱瘓」在過去的這個決定,這是我覺得每次約。

首先,請記住,如果您不斷切換到SSL,或者您使用SSL和其他內容(圖像,css)提供某些內容(頁面),某些瀏覽器將拋出彈出警告。顯然這對用戶來說不是一個好的體驗。

  1. 需要使用SSL的唯一可能的缺點是性能。但是,除非您預計每天有超過1000名用戶在做*許多不需要SSL的事情,這可以忽略不計。

  2. SSL是在Apache/Nginx的/無論級別進行處理。所以,如果你決定把後面SSL整個應用程序,它更有意義的網絡服務器級別來處理它(HTTP重定向:/yoursite.com到https://yoursite.com

如果,出於性能考慮,你決定把後面SSL一切,那麼它仍然是有意義的處理SSL重定向在Web服務器級別。通過你的Web服務器允許您的用戶,然後送他完成了一半Rails堆棧,只是引導他回到了從頭再來是非常浪費的。

當然還有一些用於簡化和知識領域可說的,這將表明處理在Rails一個重定向pp或中間件,因爲它「知道」什麼是安全和不安全的。

但這些都是你必須權衡自己的事情。這取決於原始性能還是簡單的開發/維護更重要。

我通常會得到一個用於http://mysite.com的虛擬主機,該虛擬主機將所有內容(或者有時只包含特定的uris)重定向到https://mysite.com/ $ 1。希望這有幫助。

相關問題