【问题标题】:Rails + SSL: Per controller or application-wide?Rails + SSL:每个控制器还是应用程序范围?
【发布时间】:2011-08-01 22:34:56
【问题描述】:

我可以借鉴任何使用过 Rails 和 SSL 的开发人员的智慧。我有一个相当简单的应用程序,我正在实施支付处理。显然,支付处理需要 SSL,所以我现在正在设置它。
我今天开始工作时的目的是找到最简单/最干净的方法来对特定控制器操作强制执行 SSL - 即与付款有关的任何事情。我认为没有理由在 SSL 上运行我网站的其余部分。

我发现ssl_requirement gem 似乎可以毫不费力地为每个控制器操作设置 SSL,这很好。我还发现 this question 这似乎表明使用 gem 处理 SSL 现在已经过时了。
我还发现了几个答案 / cmets 等,建议站点应该只使用 Rack 中间件,如 Rack-SSL 来强制整个站点进入 SSL 模式。

所以现在我有点困惑,不知道该怎么办。任何有使用 Rails 3 和 SSL 经验的人都可以帮助我理解:

  1. 我是应该强制整个网站使用 SSL,还是只强制执行某些操作。
  2. 在 Rails 中使用 SSL 需要注意什么陷阱(我以前从未这样做过)。
  3. 如果每个控制器都是可行的方法,那么使用 ssl-requirement gem 是否有意义,或者我是否应该只使用新的路由和链接帮助器选项...

非常感谢您的洞察力,这对我来说已成为一个瘫痪的决定。谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ssl https router


    【解决方案1】:

    过去我发现自己被这个决定“麻痹”了,这就是我每次的想法。

    首先,请记住,如果您不断退出和切换到 SSL,或者如果您使用 SSL 提供某些内容(页面)而没有提供其他内容(图像、css),则某些浏览器会抛出弹出警告。显然这对用户来说不是一个好的体验。

    1. 在任何地方都要求 SSL 唯一可能的缺点是性能。但除非您预计每天有 1000 多个用户会做很多 *不 * 需要 SSL 的事情,否则这可以忽略不计。

    2. SSL 在 Apache/Nginx/任何级别处理。因此,如果您决定将整个应用程序置于 SSL 之后,那么在 Web 服务器级别处理它是最有意义的(将 http:/yoursite.com 重定向到 https://yoursite.com

    如果出于性能原因,您决定将所有内容置于 SSL 之后,那么在 Web 服务器级别处理 SSL 重定向仍然是有意义的。允许您的用户通过您的 Web 服务器,然后通过半个 Rails 堆栈发送他,只是为了让他重新启动以重新开始是非常浪费的。

    当然,为了简单性和知识领域,有一些话要说,这将建议在 Rails 应用程序或中间件中处理重定向,因为它“知道”什么是安全和不安全的。

    但这些都是你必须自己权衡的事情。这取决于原始性能还是开发/维护的简单性更重要。

    我通常以http://mysite.com 的虚拟主机结束,它将所​​有内容(或有时仅某些uri)重定向到https://mysite.com/$1。希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-05-16
      • 1970-01-01
      • 2015-10-12
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      相关资源
      最近更新 更多