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.