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.

bigdaveyl
źródło
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

Austin Lin
źródło
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.

iltempo
źródło
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

Henrik N
źródło
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
nbit001
źródło
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).

heartpunk
źródło
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.

Abhra Basak
źródło
3

aktualizacja szyn do wersji 3.2.13 może rozwiązać to pytanie.

leonyuan
źródło