当前位置:  开发笔记 > 编程语言 > 正文

如何保护Rails应用程序免受Firesheep的攻击?

如何解决《如何保护Rails应用程序免受Firesheep的攻击?》经验,为你挑选了1个好方法。

我无法找到一个简单的指南来保护Ruby on Rails应用程序对Firesheep.

如果你不知道,如果你的应用程序没有强制SSL并在cookie中设置安全标志,Firesheep会插入会话cookie.我不得不做一些搜索才能找到这两件事,所以我想我会发布我在这里找到的东西,看看是否还有其他我想念的东西.

步骤1强制SSL

我发现有两种方法可以做到这一点.一个是使用ssl_requirement插件,但这很痛苦,因为你必须ssl_required :action1, :action2在每个控制器中专门指定.

最好的方法似乎是使用Rack Middleware,通过这篇文章:在Rails 2应用程序中使用ssl_requirement强制SSL.奇迹般有效.

第2步使cookie安全

为此我遵循了这些指示,告诉您将以下内容放入您的config/environment/production.rb文件中:

config.action_controller.session = {
    :key     => 'name_of_session_goes_here',
    :secret          => 'you need to fill in a fairly long secret here and obviously do not copy paste this one',
    :expire_after    => 14 * 24 * 3600, #I keep folks logged in for two weeks
    :secure => true #The session will now not be sent or received on HTTP requests.
  }

这在我的Rails 2.x应用程序上非常简单.我错过了什么吗?Rails 3有什么不同吗?



1> bioneuralnet..:

看起来对我很好.它在Rails 3中非常相似,但默认情况下会话配置存储在config/initializers/session_store.rb中.我经常调整我看起来像......

MyApp::Application.config.session_store :cookie_store, :key => '_my_app_session',
                                                       :secure => Rails.env == 'production', # Only send cookie over SSL when in production mode
                                                       :httponly => true, # Don't allow Javascript to access the cookie (mitigates cookie-based XSS exploits)
                                                       :expire_after => 60.minutes

秘密保存在config/initializers/secret_token.rb中:

MyApp::Application.config.secret_token = 'secret secrets are no fun...'

如果您可以访问Apache(或其他)配置,则还可以强制在该级别使用SSL.让我觉得这是一个更合适的地方,但我猜不是每个人都有这个选择.


请注意,使JavaScript无法访问的选项是`:httponly`而不是`:http_only`.后者在Rails 2.3(或更早版本)中被弃用,并在Rails 3中删除.我相信这些更改是为了使Rails与Rack保持一致.
很好的答案,但在测试中使用HTTP和生产中的HTTPS使得很容易错过混合内容问题和其他微妙的错误.
我发现这更可读:: secure => Rails.env.production ?,在我的情况下它实际上是:secure =>(Rails.env.staging?|| Rails.env.production?),或者它也可能是:secure =>!(Rails.env.test?|| Rails.env.development?)...默认是安全的
推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有