Aucune option secrète fournie à Rack :: Session :: Cookie warning?

110

J'exécute Rails 3.2.3, Ruby 1.9 sous Fedora 17. J'obtiens cet avertissement, quand j'exécute rails s, et comment résoudre le problème?

AVERTISSEMENT DE SÉCURITÉ: Aucune option secrète fournie à Rack :: Session :: Cookie. Cela constitue une menace pour la sécurité. Il est fortement recommandé de fournir un secret pour empêcher les exploits qui pourraient être possibles à partir de cookies conçus. Cela ne sera pas pris en charge dans les futures versions de Rack, et les versions futures invalideront même vos cookies utilisateur existants.

bigdaveyl
la source
1
Une valeur est-elle définie dans config / initializers / secret_token.rb?
Kashyap
Kashyap - oui, une valeur est définie.
bigdaveyl
J'ai le même avertissement après la mise à niveau de Rails de 3.2.9 à 3.2.10
AlexD
2
En fait, cet avertissement a été ajouté au rack 1.4.2 qui a été publié sur rubygems.org hier (6 janvier 2013), mais la validation réelle a été effectuée le 18 mars 2012.
AlexD
Ouais, juste aujourd'hui, j'ai aussi reçu un tel avertissement
Paritosh Piplewar

Réponses:

86

Il s'agit d'un bogue Rails, car la sous-classe viole le contrat d'API de la superclasse.

L'avertissement peut être ignoré en toute sécurité par les utilisateurs de Rails.

( https://github.com/rack/rack/issues/485#issuecomment-11956708 , italiques ajoutés)

Confirmation sur la discussion du bogue des rails: https://github.com/rails/rails/issues/7372#issuecomment-11981397

Austin Lin
la source
4
Mettez à jour vos gemmes de rails car elles sont rétroportées sur toutes les gemmes de rails prises en charge. note @ henrik-n
shadowbq
19

En lisant la discussion basée sur la réponse de tehgeekmeisters, cet avertissement apparaît car Rails utilise les cookies Rack d'une manière différente de celle prévue. Il devrait être correct d'ignorer cet avertissement pour le moment jusqu'à ce qu'il y ait un accord final sur la façon de gérer ce problème et un correctif en place.

iltempo
la source
17

Ce problème a été résolu dans la version 3.2.11 de Rails qui vient de sortir.

Journal: https://github.com/rails/rails/commits/v3.2.11

Commit: https://github.com/rails/rails/commit/95fe9ef945a35f56fa1c3ef356aec4a3b868937c

Henrik N
la source
1
@Dreyfuzz Notez que 3.2.11 est postérieur à 3.2.2 (puisque c'est 11, pas 1.1). Donc, la simple mise à niveau de Rails peut résoudre votre problème.
Henrik N
Ouais, pour une raison quelconque, je suis resté coincé à penser en notation décimale où 3.2.2 est identique à 3.2.20. Je pensais que j'étais à la pointe de la technologie pendant une minute!
Dreyfuzz
16

rails 3.2.9 - ruby ​​1.9.3p125 (révision 34643 du 16/02/2012) [i686-linux]

Bonjour à tous, ce qui suit a fonctionné pour moi, cela peut fonctionner pour vous.


/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/middleware/session/abstract_store.rb
module Compatibility
          def initialize(app, options = {})
            options[:key]     ||= '_session_id'
            #fixed warning - SECURITY WARNING: No secret option provided to Rack::Session::Cookie.
            options[:secret] ||= Rails.application.config.secret_token
            super
          end
    end
nbit001
la source
2
C'est la réponse avec le moins de «votes positifs», mais la seule réponse qui résout réellement le problème, sans rétrogradation, et sans problèmes de compatibilité. Cela efface juste le message ennuyeux
Aleks
1
Plutôt pas patcher le code des rails. Je pense qu'il vaut mieux résoudre ce problème dans la version. la mise à niveau vers 3.2.11 serait meilleure que la modification du code des rails.
allenhwkim
6

La mise à niveau vers le rack 1.4.1 devrait être suffisante pour résoudre ce problème pour le moment. Il y a un problème ouvert pour cela et je viens de soumettre une demande d'extraction qui semble le résoudre pour moi. Dans tous les cas, surveillez le problème et vous devriez être en mesure de mettre à niveau vers le rack 1.4.2 une fois le problème résolu.

Apparemment, il y a une discussion en cours sur la façon de résoudre ce problème sur un autre problème . Vous devrez soit rétrograder vers la version 1.4.1, soit l'ignorer, soit trouver votre propre correctif jusqu'à ce que cela soit réglé (et rétroporté, si cela se produit).

heartpunk
la source
5

Un problème a été ouvert dans Github https://github.com/rails/rails/issues/8789 . Il semble qu'un bogue impliquant Rails 3.2.10 avec Rack 1.4.2 en soit la cause. OMI, il peut être ignoré en toute sécurité jusqu'à ce que le problème soit résolu.

EDIT : Ce problème a été résolu dans Rails 3.2.11.

Abhra Basak
la source
3

rails mise à jour à 3.2.13, peut résoudre cette question.

leonyuan
la source