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.


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.


17

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

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).



3

rel memperbarui ke 3.2.13, dapat menyelesaikan pertanyaan ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.