2011-04-27 41 views
2

我正在研究實現SSL來保護我的Rails應用程序的最佳方法。當天的建議似乎是始終使用SSL。似乎有這樣做的兩個電流方式:Rails通過gem與Apache級別進行SSL重定向

  1. 使用的寶石,如機架:: SSL或機架:: SslEnforcer,在詳細討論:在Web服務器級別 http://collectiveidea.com/blog/archives/2010/11/29/ssl-with-rails/

  2. 重定向,這裏推薦: Rails + SSL: Per controller or application-wide?

我相信,在Apache的水平重定向(假設一個運行的Apache)必須去,既簡化實施和perfor方式曼斯。

我不明白,也沒有看到解決的是爲什麼有這麼多的精力和關注致力於在應用程序層使用寶石做到這一點?甚至有來自DHH的評論(上面第一個鏈接中的最後一條評論),聲明「Rails 3.1現在將在應用程序和控制器級別都有force_ssl。」那麼我錯過了什麼?

爲什麼會選擇使用其中一個寶石來始終使用SSL?

+0

好的 - 我已經更新了標題。 – heyrolled 2013-07-31 13:56:58

回答

1

一,它是Rails社區解決問題的簡單標準。現在,只要你想要一個Rails應用程序的https,你可以翻轉這個單一的開關,並且無論你使用什麼服務器或其他架構,它都可以工作。

二,如果您使用的是Heroku等託管服務,則無論如何您都無法訪問服務器配置設置。

+0

這很有道理 - 謝謝。 – heyrolled 2011-04-28 21:44:25

1

force_ssl是添加到Rails 3的配置屬性。它使應用程序使用Rack :: SSL中間件。 參考:http://edgeguides.rubyonrails.org/configuring.html

所以config.force_ssl是一個方便的,可以讓你避免搞亂機架堆棧;它爲你完成。

在Rails 2.X應用程序中,您不需要force_ssl,而必須自己注入Rack :: SSL或Rack :: SslEnforcer。

+0

雖然如果我理解正確,但可以選擇使用網絡服務器將站點的所有流量重定向到SSL。確實是 – heyrolled 2011-04-28 21:46:27

+0

。開發人員的選擇 – ffoeg 2011-05-24 18:29:40