Brak tajnej opcji dla Rack :: Session :: Cookie warning?


110

Używam Rails 3.2.3, Ruby 1.9 pod Fedorą 17. Otrzymuję to ostrzeżenie, kiedy uruchamiam rails si jak mogę to naprawić?

OSTRZEŻENIE O BEZPIECZEŃSTWIE: Brak tajnej opcji dla Rack :: Session :: Cookie. Stwarza to zagrożenie dla bezpieczeństwa. Zdecydowanie zalecamy podanie sekretu, aby zapobiec exploitom, które mogą być możliwe dzięki spreparowanym plikom cookie. Nie będzie to obsługiwane w przyszłych wersjach Rack, a przyszłe wersje unieważnią nawet istniejące pliki cookie użytkowników.


1
Czy wartość jest ustawiona w config / initializers / secret_token.rb?
Kashyap

Kashyap - tak, wartość jest ustawiona.
bigdaveyl

Otrzymałem to samo ostrzeżenie po aktualizacji Railsów z 3.2.9 do 3.2.10
AlexD,

2
Właściwie to ostrzeżenie zostało dodane do Rack 1.4.2, który został opublikowany na rubygems.org dopiero wczoraj (6 stycznia 2013 r.), Ale faktyczne zatwierdzenie zostało wykonane 18 marca 2012 r.
AlexD

Tak, właśnie dzisiaj dostałem takie ostrzeżenie
Paritosh Piplewar

Odpowiedzi:


86

Jest to błąd w Railsach, ponieważ podklasa narusza kontrakt API nadklasy.

Ostrzeżenie może zostać zignorowane przez użytkowników Railsów.

( https://github.com/rack/rack/issues/485#issuecomment-11956708 , podkreślenie dodane)

Potwierdzenie dyskusji o błędach w szynach: https://github.com/rails/rails/issues/7372#issuecomment-11981397


4
Zaktualizuj swoje klejnoty rails, ponieważ jest to przenoszone wstecz do wszystkich obsługiwanych klejnotów rails. note @ henrik-n
shadowbq

19

Czytając dyskusję opartą na odpowiedzi tehgeekmeisters, pojawia się to ostrzeżenie, ponieważ Rails używa plików cookie Rack w inny sposób niż zamierzony. Na razie wystarczy zignorować to ostrzeżenie, dopóki nie zostanie ostateczne porozumienie co do sposobu rozwiązania tego problemu i wprowadzenia poprawki.


17

Ten problem został rozwiązany w niedawno wydanych Railsach 3.2.11.

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

Zatwierdź: https://github.com/rails/rails/commit/95fe9ef945a35f56fa1c3ef356aec4a3b868937c


1
@Dreyfuzz Zauważ, że 3.2.11 jest późniejszy niż 3.2.2 (ponieważ jest 11, a nie 1.1). Więc samo uaktualnienie Railsów może rozwiązać problem.
Henrik N,

Tak, z jakiegoś powodu utknąłem myśląc w notacji dziesiętnej, gdzie 3.2.2 to to samo, co 3.2.20. Myślałem, że jestem na krawędzi krwawienia przez minutę!
Dreyfuzz

16

rails 3.2.9 - ruby ​​1.9.3p125 (2012-02-16 wersja 34643) [i686-linux]

Witam wszystkich, poniższe zadziałały dla mnie, może zadziałać dla Ciebie.


/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
Jest to odpowiedź z najmniejszą liczbą głosów pozytywnych, ale jedyna, która faktycznie rozwiązuje problem, bez obniżania oceny i problemów ze zgodnością. To tylko usuwa irytującą wiadomość
Aleks

1
Raczej nie łatanie kodu szyn. Myślę, że lepiej to rozwiązać w wydaniu. aktualizacja do 3.2.11 byłaby lepsza niż modyfikacja kodu railsów.
allenhwkim

6

Do rozwiązania tego problemu na razie wystarczy obniżenie wersji do wersji rack 1.4.1. Jest w tym przypadku otwarty problem i właśnie przesłałem żądanie ściągnięcia, które wydaje się rozwiązać ten problem. W każdym razie, obserwuj problem, a po jego naprawieniu powinieneś być w stanie zaktualizować do wersji rack 1.4.2.

Najwyraźniej trwa dyskusja na temat tego, jak rozwiązać ten problem w innej sprawie . Będziesz musiał albo obniżyć wersję do wersji 1.4.1, zignorować ją lub znaleźć własną poprawkę, dopóki nie zostanie to rozwiązane (i przeniesione z powrotem, jeśli tak się stanie).


5

W Github otwarto problem https://github.com/rails/rails/issues/8789 . Wygląda na to, że jest to spowodowane błędem dotyczącym Railsów 3.2.10 i Rack 1.4.2. IMO, można go bezpiecznie zignorować, dopóki problem nie zostanie rozwiązany.

EDYCJA : Ten problem został rozwiązany w Railsach 3.2.11.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.