Non sono stato in grado di trovare una guida facile per proteggere un'app Ruby on Rails contro uno Firesheep.Come proteggere un'app Rails contro Firesheep?
Nel caso non lo si sappia, Firesheep fa uso dei cookie di sessione se l'app non impone SSL e imposta il flag di sicurezza nel cookie. Ho dovuto fare qualche ricerca per trovare queste due cose, quindi ho pensato di pubblicare ciò che ho trovato qui e vedere se c'è qualcos'altro che mi manca.
Fase 1 Forza SSL
Ci sono due modi per fare questo che ho trovato. Uno sta usando il plugin ssl_requirement, ma questo è un problema perché devi specificare in modo specifico ssl_required :action1, :action2
in ogni controller.
Sembra preferibile utilizzare Rack Middleware tramite questo post: Force SSL using ssl_requirement in Rails 2 app. Funziona come un fascino.
Fase 2 fare i biscotti sicuri
Per questo ho seguito these directions, che vi dirà di mettere quanto segue nel config/environment/production.rb
del file:
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.
}
Questo è stato tutto abbastanza straight-forward sulle rotaie 2.x app. Mi sono perso qualcosa? È diverso per Rails 3?
Grazie per la risposta. Sto distribuendo su Heroku, quindi il middleware mi è sembrato il posto migliore per forzare SSL. –
Nota che l'opzione per rendere il cookie inaccessibile a JavaScript è ': httponly' piuttosto che': http_only'. Quest'ultimo è stato deprecato in Rails 2.3 (o precedente) e rimosso in Rails 3. Credo che questi cambiamenti portino Rails in linea con Rack. –
Risposta piacevole, ma l'utilizzo di HTTP nei test e HTTPS in produzione semplifica la perdita di problemi con contenuto misto e altri bug sottili. –