我没有找到一个简单的指南来保护Ruby on Rails应用程序免受Firesheep攻击。如果您不知道,如果您的应用程序没有强制使用SSL并在cookie中设置了安全标志,Firesheep会劫持会话cookie。我不得不搜索一些东西才找到这两个东西,所以我想在此发布我所发现的内容,看看是否还有其他需要注意的地方。
步骤1 强制使用SSL
我找到了两种方法可以实现这一点。一种是使用ssl_requirement插件,但这很麻烦,因为您必须在每个控制器中具体指定ssl_required :action1, :action2
。
较为可取的方式似乎是通过Rack Middleware来实现,具体请参考这篇帖子:在Rails 2应用程序中使用ssl_requirement强制使用SSL。效果很好。
步骤2 让cookies变得更加安全
对于此操作,我按照这些说明进行操作,该说明告诉您将以下内容放入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会有所不同吗?
:httponly
而不是:http_only
。后者在Rails 2.3(或更早版本)中已被弃用,并在Rails 3中删除。我认为这些变化是为了将Rails与Rack保持一致。 - Paul Annesley