Nenhuma opção secreta fornecida para Rack :: Session :: Cookie warning?

110

Estou executando o Rails 3.2.3, Ruby 1.9 no Fedora 17. Recebo este aviso, quando executo rails s, e como faço para corrigir?

AVISO DE SEGURANÇA: Nenhuma opção secreta fornecida para Rack :: Session :: Cookie. Isso representa uma ameaça à segurança. É altamente recomendável que você forneça um segredo para evitar explorações que podem ser possíveis de cookies criados. Isso não será suportado em versões futuras do Rack, e versões futuras irão até mesmo invalidar seus cookies de usuário existentes.

bigdaveyl
fonte
1
Um valor está definido em config / initializers / secret_token.rb?
Kashyap
Kashyap - sim, um valor foi definido.
bigdaveyl
Recebi o mesmo aviso depois de atualizar o Rails 3.2.9 para 3.2.10
AlexD
2
Na verdade, este aviso foi adicionado ao Rack 1.4.2, que foi lançado em rubygems.org ontem (6 de janeiro de 2013), mas o commit real foi feito em 18 de março de 2012.
AlexD
Sim, hoje eu também recebi esse aviso
Paritosh Piplewar

Respostas:

19

Lendo a discussão com base na resposta do tehgeekmeisters, este aviso está aparecendo porque o Rails está usando os cookies do Rack de uma maneira diferente da pretendida. Deve ser normal simplesmente ignorar este aviso por enquanto, até que haja um acordo final sobre como lidar com esse problema e uma correção.

iltempo
fonte
17

Este problema foi contornado no recém-lançado Rails 3.2.11.

Log: https://github.com/rails/rails/commits/v3.2.11

Commit: https://github.com/rails/rails/commit/95fe9ef945a35f56fa1c3ef356aec4a3b868937c

Henrik N
fonte
1
@Dreyfuzz Observe que 3.2.11 é posterior a 3.2.2 (já que é 11, não 1.1). Portanto, apenas atualizar o Rails pode resolver seu problema.
Henrik N de
Sim, por algum motivo, fiquei pensando em notação decimal onde 3.2.2 é o mesmo que 3.2.20. Pensei que estava no limite por um minuto!
Dreyfuzz de
16

rails 3.2.9 - ruby ​​1.9.3p125 (2012-02-16 revisão 34643) [i686-linux]

Olá a todos, o seguinte funcionou para mim, pode funcionar para você.


/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
fonte
2
Esta é a resposta com o menor dos "votos positivos", mas a única resposta que realmente resolve o problema, sem fazer downgrade e com problemas de compatibilidade. Isso apenas apaga a mensagem irritante
Aleks,
1
Em vez de corrigir o código do Rails. Acho melhor resolver isso no release. atualizar para 3.2.11 seria melhor do que modificar o código do Rails.
allenhwkim
6

O downgrade para o rack 1.4.1 deve ser suficiente para resolver isso por enquanto. um problema aberto para isso e acabei de enviar uma solicitação pull que parece corrigi-lo para mim. Em qualquer caso, observe o problema e você poderá atualizar para o rack 1.4.2 depois que isso for corrigido.

Aparentemente, há uma discussão em andamento sobre como corrigir isso em outro problema . Você terá que fazer o downgrade para 1.4.1, ignorá-lo ou descobrir sua própria correção até que isso seja resolvido (e backported, se isso acontecer).

heartpunk
fonte
5

Um problema foi aberto no Github https://github.com/rails/rails/issues/8789 . Parece que um bug envolvendo Rails 3.2.10 com Rack 1.4.2 está causando isso. IMO, ele pode ser ignorado com segurança até que o problema seja resolvido.

EDITAR : Esse problema foi resolvido no Rails 3.2.11.

Abhra Basak
fonte
3

A atualização do rails para 3.2.13 pode resolver esta questão.

leonyuan
fonte