Tidak ada opsi rahasia yang disediakan untuk Rack :: Session :: Peringatan cookie?

110

Saya menjalankan Rails 3.2.3, Ruby 1.9 di bawah Fedora 17. Saya mendapatkan peringatan ini, ketika saya menjalankan rails s, dan bagaimana cara memperbaikinya?

PERINGATAN KEAMANAN: Tidak ada opsi rahasia yang disediakan untuk Rack :: Session :: Cookie. Ini menimbulkan ancaman keamanan. Sangat disarankan agar Anda memberikan rahasia untuk mencegah eksploitasi yang mungkin dilakukan dari cookie yang dibuat. Ini tidak akan didukung di versi Rack yang akan datang, dan versi yang akan datang bahkan akan membuat cookie pengguna Anda yang ada tidak valid.

bigdaveyl
sumber
1
Apakah nilai ditetapkan di config / initializers / secret_token.rb?
Kashyap
Kashyap - ya, nilai ditetapkan.
bigdaveyl
Saya mendapat peringatan yang sama setelah memutakhirkan Rails dari 3.2.9 ke 3.2.10
AlexD
2
Sebenarnya peringatan ini ditambahkan ke Rack 1.4.2 yang dirilis di rubygems.org baru kemarin (6 Jan 2013) tetapi commit sebenarnya dilakukan pada 18 Maret 2012.
AlexD
Ya, baru hari ini saya juga mendapat peringatan seperti itu
Paritosh Piplewar

Jawaban:

19

Membaca diskusi berdasarkan jawaban tehgeekmeisters, peringatan ini muncul karena Rails menggunakan cookie Rack dengan cara yang berbeda dari yang dimaksudkan. Sebaiknya abaikan saja peringatan ini untuk saat ini hingga ada kesepakatan akhir tentang cara menangani masalah ini dan perbaikannya.

iltempo
sumber
17

Masalah ini telah diatasi di Rails 3.2.11 yang baru dirilis.

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

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

Henrik N
sumber
1
@Dreyfuzz Perhatikan bahwa 3.2.11 lebih baru dari 3.2.2 (karena ini 11, bukan 1.1). Jadi hanya meningkatkan Rails dapat memperbaiki masalah Anda.
Henrik N
Ya, untuk beberapa alasan saya terjebak memikirkan notasi desimal di mana 3.2.2 sama dengan 3.2.20. Pikir saya berada di tepi berdarah selama satu menit!
Dreyfuzz
16

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

Halo semuanya, berikut ini berhasil untuk saya, mungkin berhasil untuk Anda.


/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
sumber
2
Ini adalah jawaban dengan "suara positif" paling sedikit, tetapi satu-satunya jawaban yang benar - benar menyelesaikan masalah, tanpa menurunkan peringkat, dan memiliki masalah kompatibilitas. Itu hanya menghapus pesan yang mengganggu
Aleks
1
Bukannya menambal kode rel. Saya pikir ini lebih baik diselesaikan dalam rilis. meningkatkan ke 3.2.11 akan lebih baik daripada memodifikasi kode rel.
allenhwkim
6

Menurunkan versi ke rak 1.4.1 seharusnya cukup untuk menyelesaikan masalah ini untuk saat ini. Ada masalah terbuka untuk ini dan saya baru saja mengirimkan permintaan tarik yang tampaknya memperbaikinya untuk saya. Bagaimanapun, perhatikan masalahnya, dan Anda seharusnya dapat meningkatkan ke rak 1.4.2 setelah ini diperbaiki.

Rupanya, ada diskusi yang sedang berlangsung tentang cara memperbaiki ini di masalah lain . Anda harus menurunkan versi ke 1.4.1, mengabaikannya, atau mencari tahu perbaikan Anda sendiri sampai hal ini ditangani (dan di-backport, jika itu terjadi).

heartpunk
sumber
5

Masalah telah dibuka di Github https://github.com/rails/rails/issues/8789 . Tampaknya bug yang melibatkan Rails 3.2.10 dengan Rack 1.4.2 menyebabkan ini. IMO, ini dapat diabaikan dengan aman sampai masalah teratasi.

EDIT : Masalah ini telah diselesaikan di Rails 3.2.11.

Abhra Basak
sumber
3

rel memperbarui ke 3.2.13, dapat menyelesaikan pertanyaan ini.

leonyuan
sumber