Rails2路由问题

时间:2012-12-14 08:18:26

标签: ruby-on-rails ruby

在我的Rails 2应用程序中,我发现了路由中的安全漏洞。我正在使用Rails 2.3.8。这是我的实施:

# routes.rb
map.connect 'sampleview', :controller => 'sample', :action => 'view'

在某些情况下,我的网址就像http://example.com/sampleview?view_url=http://test.com?s=2&code=15

在这种情况下,我已经去了test.com(这个test.com是我在我的应用程序中显示的另一个域名),页面被放置在iframe标签中。

问题是假如我框架url:

http://example.com/sampleview?view_url=http://www.google.com

Google登录页面位于我的应用程序中的iframe标记中。这个不好。

如果网址http://example.com/sampleview?view_url=http://www.google.com包含的不是test.com。我必须向用户发送消息。这不是有效的网址。

如何修改我的routes.rb以支持此解决方案或任何其他解决方案。请帮忙。

1 个答案:

答案 0 :(得分:3)

我不确定您是否可以在Rails 3.2中执行此操作,因为路由上的约束选项不存在。我建议你在控制器中实现它,最终使用before_filter。如果必须在不同的控制器之间共享,可以将其放在ApplicationController中。

更新:添加示例

class ApplicationController
  before_filter :check_view_url

  private

  def check_view_url
    if params[:view_url] && params[:view_url] !~ %r{^http://test.com}
      raise "Trying to access invalid website"
    end
  end

end