Не передбачено таємний варіант для Rack :: Session :: попередження cookie?


110

Я використовую Rails 3.2.3, Ruby 1.9 під Fedora 17. Я отримую це попередження, коли запускаю rails s, і як це виправити?

ПОПЕРЕДЖЕННЯ ПРО БЕЗПЕКА: Не використовується секретний варіант для Rack :: Session :: Cookie. Це створює загрозу безпеці. Настійно рекомендується надати секрет, щоб запобігти подвигам, які можуть бути можливими у створених файлах cookie. Це не підтримуватиметься в майбутніх версіях Rack, а майбутні версії навіть недійсні файли cookie користувача.


1
Чи встановлено значення в config / inicijalizers / secret_token.rb?
Каш’яп

Кашяп - так, встановлено значення.
bigdaveyl

Я отримав таке ж попередження після оновлення Rails з 3.2.9 до 3.2.10
AlexD

2
Насправді це попередження було додано до Rack 1.4.2, який був опублікований на сайті rubygems.org лише вчора (6 січня 2013 р.), Але фактичне виконання було здійснено 18 березня 2012 р.
AlexD

Так, саме сьогодні я теж отримав таке попередження
Paritosh Piplewar

Відповіді:


86

Це помилка Rails, оскільки підклас порушує контракт API суперкласу.

Застереження можуть безпечно ігнорувати користувачі Rails.

( https://github.com/rack/rack/isissue/485#issuecomment-11956708 , наголос додано)

Підтвердження дискусії про помилку на рейках: https://github.com/rails/rails/isissue/7372#issuecomment-11981397


4
Оновіть дорогоцінні камені, оскільки це підтримується всіма підтримуваними дорогоцінними каменями. note @ henrik-n
shadowbq

19

Читаючи дискусію на основі відповіді tehgeekmeisters, це попередження спливає, оскільки Rails використовує файли cookie Rack іншим способом, ніж призначено. Було б нормально поки що просто ігнорувати це попередження, поки не буде остаточна згода щодо вирішення цього питання та виправлення на місці.


17

Цю проблему було розроблено у щойно випущеній Rails 3.2.11.

Журнал: https://github.com/rails/rails/commits/v3.2.11

Звернутись: https://github.com/rails/rails/commit/95fe9ef945a35f56fa1c3ef356aec4a3b868937c


1
@Dreyfuzz Зауважимо, що 3.2.11 пізніше 3.2.2 (оскільки це 11, а не 1.1). Тож просто оновлення Rails може вирішити вашу проблему.
Генрік N

Так, я чомусь зациклювався на думці в десятковій нотації, де 3.2.2 те саме, що 3.2.20. Думав, що на хвилину я опинився на кровоточивому краю!
Дрейфуз

16

рейки 3.2.9 - рубін 1.9.3p125 (2012-02-16 перегляд 34643) [i686-linux]

Привіт усім, наступне працювало для мене, це може працювати для вас.


/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/middleware/session/ab абстракт_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
Це відповідь з найменшою кількістю "голосів", але сама єдина відповідь, яка насправді вирішує проблему, не знижуючи її та не маючи питань сумісності. Це просто очищає набридливе повідомлення
Алекс

1
Швидше не латати код рейки. Я думаю, що це краще вирішити у випуску. оновлення до 3.2.11 було б краще, ніж зміна коду рейки.
allenhwkim

6

Перехід на стійку до версії 1.4.1 наразі має бути достатнім для вирішення цього питання. Для цього відкрито питання, і я щойно подав запит на витяг, який, здається, вирішує для мене. У будь-якому випадку спостерігайте за проблемою, і ви зможете оновити до стійки 1.4.2 після того, як це буде виправлено.

Мабуть, триває дискусія щодо того, як це виправити в іншому питанні . Вам доведеться або понизити версію до 1.4.1, ігнорувати її, або з'ясувати власне виправлення, поки це не буде вирішено (і підтримано, якщо це навіть станеться).


5

Випуск відкрито в Github https://github.com/rails/rails/isissue/8789 . Здається, що помилка, пов’язана з Rails 3.2.10 із Rack 1.4.2, викликає це. IMO, його можна сміливо ігнорувати, поки проблема не буде вирішена.

EDIT : Ця проблема була вирішена в Rails 3.2.11.


3

оновлення рейок до 3.2.13, може вирішити це питання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.