【发布时间】:2011-12-13 00:11:06
【问题描述】:
我目前有一个设置,我在我的应用程序控制器中使用此 before_filter 强制 SSL 或 http:
def force_ssl
if params[:controller] == "sessions"
if !request.ssl? && Rails.env.production?
redirect_to :protocol => 'https://', :status => :moved_permanently
end
else
if request.ssl? && Rails.env.production?
redirect_to :protocol => 'http://', :status => :moved_permanently
end
end
end
我想做的是在使用 SSL 时使用https://secure.example.com,但在不使用 SSL 时继续使用http://example.com。有没有办法可以根据我是否使用 SSL 在主机名之间切换?
【问题讨论】:
-
当身份验证完成后,任何人都可以破解他们的会话,例如,为什么还要强迫您的用户通过 SSL 身份验证。 firesheep,免费的会话黑客 firefox 插件。如果您尝试以这种方式使用 SSL,您并没有保护您的用户。相反,如果您的网站的某些部分需要通过 SSL 交付,那么从实际的安全角度来看,您网站的每个部分都可能也需要通过 SSL 交付(或者,至少,在身份验证之后的每个部分)。
标签: ruby-on-rails ruby ssl https hostname