我正在研究实现SSL以保护我的rails应用程序的最佳方法。目前的建议似乎是一直使用SSL。目前似乎有两种方法:
-
使用一个gem,如Rack::SSL或Rack::SslEnforcer,详细讨论如下:http://collectiveidea.com/blog/archives/2010/11/29/ssl-with-rails/
-
在web服务器级别重定向,这里推荐使用:Rails + SSL:每个控制器还是整个应用程序?
我确信在Apache级别重定向(假设正在运行Apache)一定是可行的方法,既可以简化实现,又可以简化性能。
我不明白的是,为什么有这么多的精力和注意力投入到使用gem在应用层做这件事?甚至有一个来自DHH的评论(上面第一个链接的最后一个评论)说"Rails 3.1现在将在应用程序和控制器级别都嵌入force_ssl。"那么我错过了什么呢?
为什么总是选择使用其中一个gem来使用SSL ?
第一,它是Rails社区易于采用的标准。现在,当你想为Rails应用程序要求https时,你可以翻转这个开关,它将工作,无论你可能使用什么服务器或其他架构。
第二,如果你使用的是Heroku这样的托管服务,你将无法访问服务器配置设置
force_ssl是Rails 3添加的配置属性。它使应用程序使用Rack::SSL中间件。参考:http://edgeguides.rubyonrails.org/configuring.html
配置。force_ssl是一个方便,让你避免搞乱机架堆栈;已经为你办好了。
在Rails 2。X应用程序,你不会有force_ssl,将不得不注入Rack::SSL或Rack::SslEnforcer自己。