2011-04-09 84 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。希望这有帮助。

相关问题