Не передбачено таємний варіант для 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.