Предупреждение Rack :: Session :: Cookie не предоставлено секретной опции?

110

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

ПРЕДУПРЕЖДЕНИЕ О БЕЗОПАСНОСТИ: для Rack :: Session :: Cookie не предоставлена ​​секретная опция. Это создает угрозу безопасности. Настоятельно рекомендуется предоставить секрет для предотвращения эксплойтов, которые могут быть возможны из-за созданных файлов cookie. Это не будет поддерживаться в будущих версиях Rack, а в будущих версиях даже ваши существующие пользовательские файлы cookie будут аннулированы.

Bigdaveyl
источник
1
Установлено ли значение в config / initializers / secret_token.rb?
Kashyap
Кашьяп - да, значение установлено.
bigdaveyl
У меня такое же предупреждение после обновления Rails с 3.2.9 до 3.2.10
AlexD
2
Фактически это предупреждение было добавлено в Rack 1.4.2, которое было опубликовано на rubygems.org только вчера (6 января 2013 г.), но фактическая фиксация была произведена 18 марта 2012 г.
AlexD
Да, только сегодня я тоже получил такое предупреждение
Паритош Пиплевар

Ответы:

86

Это ошибка Rails, поскольку подкласс нарушает контракт API суперкласса.

Пользователи Rails могут спокойно игнорировать предупреждение.

( https://github.com/rack/rack/issues/485#issuecomment-11956708 , курсив добавлен)

Подтверждение в обсуждении ошибки rails: https://github.com/rails/rails/issues/7372#issuecomment-11981397

Остин Лин
источник
4
Обновите свои драгоценные камни рельсов, так как они переносятся на все поддерживаемые драгоценные камни рельсов. note @ henrik-n
shadowbq
19

Читая обсуждение, основанное на ответе tehgeekmeisters, это предупреждение появляется, поскольку Rails использует файлы cookie Rack не так, как предполагалось. Можно просто игнорировать это предупреждение, пока не будет окончательного соглашения о том, как справиться с этой проблемой и исправления на месте.

iltempo
источник
17

Эта проблема была устранена в только что выпущенной версии Rails 3.2.11.

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

Фиксация: https://github.com/rails/rails/commit/95fe9ef945a35f56fa1c3ef356aec4a3b868937c

Хенрик Н
источник
1
@Dreyfuzz Обратите внимание, что 3.2.11 позже 3.2.2 (так как это 11, а не 1.1). Так что простое обновление Rails может решить вашу проблему.
Henrik N
Ага, я почему-то застрял, думая в десятичной системе счисления, где 3.2.2 это то же самое, что и 3.2.20. Подумал, что я был на передовой на минуту!
Dreyfuzz
16

рельсы 3.2.9 - ruby ​​1.9.3p125 (16.02.2012, редакция 34643) [i686-linux]

Всем привет, у меня сработало следующее, может сработать и у вас.


/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
источник
2
Это ответ с наименьшим количеством голосов «за», но это единственный ответ, который действительно решает проблему, без понижения и проблем совместимости. Он просто убирает надоедливое сообщение
Алекс
1
Лучше не исправлять код рельсов. Думаю, это лучше разрешить в релизе. обновление до 3.2.11 будет лучше, чем изменение кода rails.
allenhwkim 03
6

Для решения этой проблемы на данный момент должно быть достаточно понижения версии до версии 1.4.1. Для этого есть проблема, и я только что отправил запрос на перенос который, кажется, исправляет это для меня. В любом случае, обратите внимание на проблему, и вы сможете перейти на стойку 1.4.2 после ее устранения.

По-видимому, продолжается обсуждение того, как исправить это по другой проблеме . Вам придется либо перейти на версию 1.4.1, либо проигнорировать ее, либо найти собственное решение, пока это не будет решено (и не будет перенесено обратно, если это вообще произойдет).

сердечный панк
источник
5

Проблема была открыта в Github https://github.com/rails/rails/issues/8789 . Похоже, что это вызывает ошибка, связанная с Rails 3.2.10 с Rack 1.4.2. ИМО, это можно спокойно игнорировать, пока проблема не будет решена.

РЕДАКТИРОВАТЬ : эта проблема была решена в Rails 3.2.11.

Абхра Басак
источник
3

обновление rails до 3.2.13, может решить этот вопрос.

леоньюань
источник