Keine geheime Option für Rack :: Session :: Cookie-Warnung?


110

Ich verwende Rails 3.2.3, Ruby 1.9 unter Fedora 17. Ich erhalte diese Warnung, wenn ich ausgeführt werde rails s, und wie kann ich das Problem beheben?

SICHERHEITSWARNUNG: Für Rack :: Session :: Cookie wird keine geheime Option bereitgestellt. Dies stellt eine Sicherheitsbedrohung dar. Es wird dringend empfohlen, ein Geheimnis anzugeben, um Exploits zu verhindern, die durch gestaltete Cookies möglich sind. Dies wird in zukünftigen Versionen von Rack nicht unterstützt, und zukünftige Versionen machen sogar Ihre vorhandenen Benutzer-Cookies ungültig.


1
Ist in config / initializers / secret_token.rb ein Wert festgelegt?
Kashyap

Kashyap - ja, ein Wert wird gesetzt.
Bigdaveyl

Ich habe die gleiche Warnung nach dem Upgrade von Rails von 3.2.9 auf 3.2.10
AlexD

2
Eigentlich wurde diese Warnung zu Rack 1.4.2 hinzugefügt, das erst gestern (6. Januar 2013) auf rubygems.org veröffentlicht wurde, aber das eigentliche Commit wurde am 18. März 2012 durchgeführt.
AlexD

Ja, gerade heute habe auch ich eine solche Warnung bekommen
Paritosh Piplewar

Antworten:


86

Dies ist ein Rails-Fehler, da die Unterklasse den API-Vertrag der Oberklasse verletzt.

Die Warnung kann von Rails-Benutzern ignoriert werden.

( https://github.com/rack/rack/issues/485#issuecomment-11956708 , Hervorhebung hinzugefügt)

Bestätigung auf der Schiene Fehler Diskussion: https://github.com/rails/rails/issues/7372#issuecomment-11981397


4
Aktualisieren Sie Ihre Rails-Edelsteine, da diese auf alle unterstützten Rails-Edelsteine ​​zurückportiert werden. note @ henrik-n
shadowbq

19

Wenn Sie die Diskussion lesen, die auf der Antwort von tehgeekmeisters basiert, wird diese Warnung angezeigt, da Rails Rack-Cookies anders als beabsichtigt verwendet. Es sollte in Ordnung sein, diese Warnung vorerst einfach zu ignorieren, bis eine endgültige Einigung über die Behandlung dieses Problems und eine Korrektur vorliegt.


17

Dieses Problem wurde in den gerade veröffentlichten Rails 3.2.11 behoben.

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

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


1
@Dreyfuzz Beachten Sie, dass 3.2.11 später als 3.2.2 ist (da es 11 ist, nicht 1.1). Nur ein Upgrade von Rails kann Ihr Problem beheben.
Henrik N

Ja, aus irgendeinem Grund habe ich nicht mehr in Dezimalschreibweise gedacht, wobei 3.2.2 mit 3.2.20 identisch ist. Ich dachte, ich wäre dort für eine Minute am Rande!
Dreyfuzz

16

Schienen 3.2.9 - Ruby 1.9.3p125 (2012-02-16 Revision 34643) [i686-Linux]

Hallo allerseits, das Folgende hat für mich funktioniert, es kann für Sie funktionieren.


/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

2
Dies ist die Antwort mit den geringsten "Up Votes", aber die einzige Antwort, die das Problem tatsächlich löst, ohne ein Downgrade durchzuführen und Kompatibilitätsprobleme zu haben. Es löscht nur die nervige Nachricht
Aleks

1
Den Rails-Code lieber nicht patchen. Ich denke, das sollte in der Veröffentlichung besser gelöst werden. Ein Upgrade auf 3.2.11 wäre besser als das Ändern des Rails-Codes.
Allenhwkim

6

Ein Downgrade auf Rack 1.4.1 sollte ausreichen, um dies vorerst zu lösen. Hierfür ist ein Problem offen, und ich habe gerade eine Pull-Anfrage eingereicht , die es für mich zu beheben scheint. Beobachten Sie auf jeden Fall das Problem, und Sie sollten in der Lage sein, ein Upgrade auf Rack 1.4.2 durchzuführen, nachdem dies behoben wurde.

Anscheinend wird derzeit darüber diskutiert, wie dies bei einem anderen Problem behoben werden kann . Sie müssen entweder ein Downgrade auf 1.4.1 durchführen, es ignorieren oder Ihren eigenen Fix herausfinden, bis dies behoben ist (und zurückportiert werden, falls dies überhaupt passiert).



Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.